Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时,不会影响程序的性能。
DbUtils简介
DbUtils是Java编程中数据库操作的实用小工具,小巧、简单、实用。
- 对于数据表的查询操作,可以把结果转换为List、Array、Set等集合,便于操作。
- 对于数据表的DML操作,也变得很简单(只需要写SQL语句)。
DbUtils主要内容
ResultSetHandler接口:转换类型接口
- BeanHandler类:实现类,把一条记录转换成对象。
- BeanListHandler类:实现类,把多条记录转换成List集合。
- ScalarHandler类:实现类,适合获取一行一列的数据。
QueryRunner:执行sql语句的类
- 增删改:update();
- 查询:query();
DbUtils的使用步骤
- 导入jar包:
- mysql连接驱动jar包;
- druid-1.2.3.jar;
- commons-dbutils-1.7.jar;
- 创建配置文件database.properties
代码实现
进行操作的表t_student如下:
stu_id | stu_name | stu_sex | stu_major |
---|---|---|---|
-
创建QueryRunner对象,务必调用有参构造方法。该类的构造方法可接收一个连接池对象。
private QueryRunner QueryRunner=new QueryRunner(DbUtils.getDataSource());
DbUtils.getDataSource()
从工具类中获取连接池对象,我用的是Druid连接池,工具类代码略。 -
新增
//新增的sql语句 String sql="insert into t_student(stu_id,stu_name,stu_sex,stu_major) value(?,?,?,?)"; //参数列表 Object[] params= {student.getStu_id(),student.getStu_name(),student.getStu_sex(),student.getStu_major()}; //返回受影响行数 return QueryRunner.update(sql,params);
-
删除
//删除的sql语句 String sql="delete from t_student where stu_id=?"; //返回受影响的行数 return QueryRunner.update(sql,stu_id);
-
修改
//修改的sql语句 String sql="update t_student set stu_name=?,stu_sex=?,stu_major=? where stu_id=?"; //参数列表 Object[] params= {student.getStu_name(),student.getStu_sex(),student.getStu_major(),student.getStu_id()}; //返回受影响的行数 return QueryRunner.update(sql,params);
-
查询单行数据
//查询的sql语句 String sql="select * from t_student where stu_id=?"; //接收查询结果 t_student student=QueryRunner.query(sql,new BeanHandler<t_student>(t_student.class),stu_id); //返回查询结果封装的对象 return student;
-
查询多行数据
//查询的sql语句 String sql="select * from t_student"; //接收查询结果集合 List<t_student> students=QueryRunner.query(sql,new BeanListHandler<t_student>(t_student.class)); //返回结果集合 return students;
-
查询单行单列的数据,用得少,一般用来求和之类的
//查询的sql语句 String sql="select count(*) from t_student"; //接收查询结果 long reslut=QueryRunner.query(sql, new ScalarHandler<>()); //返回结果 return reslut;
需要注意的是,查询单行单列的返回结果需要用long类型来接收。
以上就是Commons DbUtils工具包增删改查的使用方法,为了便于观察我只把相关代码罗列了出来,不过方法主体内容也就只有这些,看上去很简单,不用自己去获取连接、预编译啥的,只需要在DaoImpl类中编写相关sql语句然后调用工具方法就行了。
虽然看上去有偷懒的嫌疑,但工具类的相关源码实际上是以前学习时手写过的内容,知道实现原理那也就不算是偷懒了。