Dbutils工具类使用
Dbutils工具类是java编程中的数据库操作实用工具,封装了对JDBC的操作,简化了JDBC操作
Dbutils有三个核心类
- DbUtils
- QueryRunner
- ResultSetHandle
这里使用c3p0配合Dbutils工具类
所需jar包
commons-dbutils-1.7.jar
链接:https://pan.baidu.com/s/13zUT2b2Uj1C1B-1-p2XFhQ
提取码:gtq7
开始
-
完成c3p0配置,导入上述jar包。
-
新建JSBCUtil.java工具类,创建一个与数据库关联的queryRunner对象,后期再操作数据库的时候,不需要Connection对象,自动管理事务。参数是:数据库连接池对象。
QueryRunner queryRunner = new QueryRunner(C3p0Utils.getDataSource());
-
查询整个列表
public static <T> List<T> query(String sql,Class<T> clz){ List<T> list = null; try { //sql是传入的sql语句 //BeanListHandler : 返回List,每行是Bean //clz是返回list中的类型 list = queryRunner.query(sql, new BeanListHandler(clz)); } catch (SQLException e) { e.printStackTrace(); } return list; }
test
public void testQuery(){ String sql = "select * from users"; List<User> list = JDBCUtil.query(sql, User.class); System.out.println(list); }
-
查询某条数据
public static <T>T query(String sql,int id,Class<T> clz){ T nt = null; try { //sql是传入的sql语句 //id是要查询的数据 //BeanHandler -- 返回第一个Bean对象 //clz是返回的类型 nt = (T)queryRunner.query(sql, id,new BeanHandler(clz)); } catch (SQLException e) { e.printStackTrace(); } return nt; }
- 增删改
public static boolean update(String sql,Map<String,String> map){ //参数中传入sql,map中存的是sql语句中的?(这里看不懂的话,下面test中有案例) String[] arr = new String[map.size()]; //将map转换为数组 map.values().toArray(arr); try { int rows = queryRunner.update(sql,arr); if(rows>0) return true; } catch (SQLException e) { e.printStackTrace(); } return false; }
test
public void testUpdate(){ String sql = "update users set uname=?,upassword=? where uid=?"; //LinkedHashMap是有序的map,添加顺序与遍历顺序一致 Map<String, String> map = new LinkedHashMap<String,String>(); map.put("uname", "zjj"); map.put("upassword", "zjjjj"); map.put("uid", "11"); JDBCUtil.update(sql, map); }
补充
其中query方法中RequestSetHandler 参数对应的返回类型:
AbstractListHandler:返回多行List的抽象类
ArrayHandler:返回一行的Object[]
ArrayListHandler:返回List,每行是Object[]
BeanHandler:返回第一个Bean对象
BeanListHandler:返回List,每行是Bean
ColumnListHandler:返回一列的List
KeyedHandler:返回Map,具体见代码
MapHandler:返回单个Map
MapListHandler:返回List,每行是Map
ScalarHandler:返回列的头一个值