前面我们学习了JDBC连接相应的数据库,可以对数据进行一些增删改查的操作,但是仍然存在一些冗余。随着技术的进步,这些不能满足当前大数据时代的要求,需要更加方便简洁的方式来操作数据。这时候就引入DBUtils,这是Apache commons组件的一个成员:我们用的是commons-dbutils-1.6.jar。
【简介】
DBUtils是java编程中的数据库操作工具,封装了JDBC的操作,即JDBC的简化开发工具包。
三个核心功能类:
QueryRunner中提供对sql语句操作的API---update和query
ResultSetHandler接口,用于定义select操作后,怎样封装结果集。
DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。
【-QueryRunner之update和query】
update(Connection conn, Stringsql, Object... params) ,用来完成表数据的增加、删除、更新操作。
query(Connection conn, Stringsql,ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作。
【结果集的处理】
ResultSetHandler对结果集的处理。

- <span style="font-family:'KaiTi_GB2312';font-size:18px;" deep="5">public class DBUtilsDemo {
- private static Connection conn = MyJDBCUtils.getConnection();
- private static QueryRunner qr=new QueryRunner();
- public static void main(String[] args) throws Exception {
- update();
- query();
- }
-
- public static void update() throws Exception{
- QueryRunner qr=new QueryRunner();
- String sql="insert into sort(sname,sprice,sdesc) values(?,?,?)";
- Object [] params ={ "lisi", 12.12, "张三添加数据库"};
- int row1 = qr.update(conn, sql,params);
- System.out.println(row1);
- MyJDBCUtils.close();
-
-
-
-
-
-
-
-
-
- }
-
-
- public static void query() throws SQLException{
- String sql="select * from sort where sid>?";
- Object [] params={3};
-
-
- Object[] obj = qr.query(conn, sql, new ArrayHandler(),params);
-
- for (Object object : obj) {
- System.out.print(object+"\t");
- }
-
-
- List<Object[]> query = qr.query(conn, sql, new ArrayListHandler(), params);
- for (Object[] objects : query) {
- for (Object object : objects) {
- System.out.print(object+"\t");
- }
- System.out.println();
- }
-
- sort query2 = qr.query(conn, sql, new BeanHandler<sort>(sort.class), params);
- System.out.println(query2);
-
-
- List<sort> query3 = qr.query(conn, sql, new BeanListHandler<sort>(sort.class), params);
- for (sort sort : query3) {
- System.out.println(sort);
- }
-
-
- List<Object> query4 = qr.query(conn, sql, new ColumnListHandler<>("sname"), params);
- for (Object object : query4) {
- System.out.println(object);
- }
-
- String sql1="select count(*) from sort where sid>'4' ";
- long query5 = qr.query(conn, sql1, new ScalarHandler<Long>());
- System.out.println(query5);
-
-
- Map<String, Object> map = qr.query(conn, sql, new MapHandler(), params);
- for (String key : map.keySet()) {
- System.out.print(key+" "+map.get(key));
- }
-
-
- List<Map<String, Object>> query6 = qr.query(conn, sql, new MapListHandler(), params);
- for (Map<String, Object> map2 : query6) {
- for (String key:map2.keySet()) {
- System.out.print(key+" "+map2.get(key));
- }
- System.out.println();
- }
- }
- }</span>
【小结】
自我感觉,DBUtils工具类在查询中更能体现它的方便,对数据库的查询直接可以根据需要定义,大大简化代码,提高效率。