package com.fdmis.util;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
public class DBUtils {
//数据源配置
private static final String DATA_SOURCE="java:EFLOWSource";
private DataSource dataSource=this.getDataSource();
/**
*ArrayHandler:把结果集中的第一行数据转成对象数组。
*ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
*BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
*BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
*ColumnListHandler:将结果集中某一列的数据存放到List中。
*KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
*MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
*MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
*/
/**
* 得到第一行数据,类型List<Object>
*/
public List<Object> getOneByArray(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
Object result[] = (Object[]) qr.query(sql, new ArrayHandler());
return Arrays.asList(result);
}
/**
* 得到每一行数据,类型List<Array>
*/
public List<Object[]> getAllByArray(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
List<Object[]> list = (List<Object[]>) qr.query(sql, new ArrayListHandler());
return list;
}
/**
* 得到第一行数据,类型Map<String,Object>
*/
public Map<String,Object> getOneByMapHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
Map<String,Object> map = (Map<String,Object>) qr.query(sql, new MapHandler());
return map;
}
/**
* 得到每一行数据,类型List<Map<String,Object>>
*/
public List<Map<String,Object>> getAllMapListHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
List<Map<String,Object>> list = (List<Map<String,Object>>) qr.query(sql, new MapListHandler());
return list;
}
/**
* 得到每一行数据,类型JsonString
*/
public String getAllJsoonHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
List<Map<String,Object>> list = (List<Map<String,Object>>) qr.query(sql, new MapListHandler());
JsonUtil jsonUtil= new JsonUtil();
return jsonUtil.toStrings(list);
}
/**
* 得到第一行数据,类型Bean.class
*/
@SuppressWarnings("rawtypes")
public <T> T find(String sql,final Class<T> type) throws SQLException {
QueryRunner qr = new QueryRunner(dataSource);
@SuppressWarnings("unchecked")
T t = (T) qr.query(sql,new BeanHandler(type));
return t;
}
/**
* 得到每一行数据,类型List<Bean.class>
*/
@SuppressWarnings("rawtypes")
public <T>List<T> getAll(String sql,final Class<T> type) throws SQLException {
QueryRunner qr = new QueryRunner(dataSource);
@SuppressWarnings("unchecked")
List<T> list = (List<T>) qr.query(sql, new BeanListHandler(type));
return list;
}
/**
* 得到总条数
*/
@SuppressWarnings("rawtypes")
public Integer getScalarHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
@SuppressWarnings("unchecked")
Integer count = qr.query(sql, new ScalarHandler(1));
return count;
}
//获取数据源
private DataSource getDataSource(){
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DATA_SOURCE);
return ds;
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//获取连接
public static Connection getConnection(){
Context ctx;
try {
ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DATA_SOURCE);
return ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
更新日期20150902
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
DbUtil 对 JDBC 进行简单的...但 DbUtil 对类的自动装载没有进行较好的封装 本demo实现了数据库中字段若为下划线分隔,而对应的实体类中是以驼峰式命名的情况进行自动装载 利用 resultSet 的元数据和 JAVA 的暴力反射
韩顺平SqlHelper,DBUtil工具类,非静态可用,dbinfo为sql server 版
DBUtil工具类jar包,DBUtil工具类简化操作数据库,使程序员更加方便进行CRUD的操作。提供给大家学习使用
dbutil工具类使用demo继承maven druidd butil工具类使用demo继承maven druid
dbUtil使用:调用Apache Commons DBUtil组件的数据库操作类 采用DBCP作为数据源,数据源在Spring中已经配置好
DBUtil(ASP。NET数据库连接工具类),集成了目前常用数据库,开发程序时不用再写一大堆连接代码 ,直接调用就行,节省时间,方便快速
封装好的DbUtil工具类,可以直接用,不用重复写了。
对apache的dbutil包的改进,改善了代码结构,增加了直接对resultset输出json的支持
DBUtil的类,在WEB开发当中有许多项目都需要用它,可以不用重复写,这样很方便
写好sql语句,调用该工具类内的方法,即可实现增删改查mysql数据库的操作。带有详细解释
Apache最新的DButil工具类已经文档
apache中DBUtil学习共28页.pdf.zip
SQLServer数据库工具类(DBUtil.java)JDBC连接数据库
Apache DBCP,工具亲测有效,=================================================================================
apache 的 DBUtils是一个为简化JDBC操作的小类库,使用方便,上手很快,是个不错的东西
带了一张全国地址数据的mysql单表版,DBUtil JDBC工具类 java封装的dao层,及测试类,可以直接用测试类测试查询,比如查询福建厦门几个区,福建三明几个县等等,可以用在用户注册页面地址数据的获取。
主要是为了方便我自己编程使用
自己写的android-DBUtil类,方便操作数据库