DBUtils

  DBUtils是JDBC的简化开发工具包。需要导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。
1、DBUtils功能简介
   1.QueryRunner中提供对SQL语句操作的API
   2.ResultSetHandler接口,用于定义select操作后,怎样封装结果集
   3.DBUtils类,它是一个工具类,定义了关闭资源与事务处理的方法
2、QueryRunner核心类
   1.update(Connection conn ,String sql, Object ... params), 用来完成表数据的增加、删除、更新操作。
   2.query(Connection conn ,String sql ,ResultSetHandler<T>rsh, Object...params), 用来完成表数据的查询操作.
3、QueryRunner实现添加、更新、删除操作
3.1 添加
 1 public void insert(){
 2     try{
 3         //获取一个用来执行SQL语句的对象 QueryRunner
 4         QueryRunner qr = new QueryRunner();
 5         String sql = "insert into student(sno,sname,ssex) values (?,?,?)";
 6         Object[] params = {"1","张三","男"};
 7         Connection conn = JDBCUtils.getConnection();
 8         int line = gr.update(conn,sql,params);//用来完成表数据的增加、删除、更新操作
 9         //结果处理集
10         System.out.println("line="+line);
11     }catch(SQLException e){
12         throw new RuntimeException(e);
13     }
14 }
 
3.2 更新
 1 public void update(){
 2     try {
 3         //创建一个QueryRunner对象,用来完成SQL语句的执行
 4         QueryRunner qr = new QueryRunner();
 5         //执行SQL语句
 6         String sql = "UPDATE student SET sname = '李四' WHERE sno=?";
 7         Object[] params = {"1"};
 8         Connection conn = JDBCUtils.getConnection();
 9         int line = qr.update(conn, sql, params);
10         //结果集的处理
11         System.out.println("line="+line);
12     } catch (SQLException e) {
13         throw new RuntimeException(e);
14     }
15 }
 
3.3 删除
 1 public void delete(){
 2     try {
 3         //创建一个QueryRunner对象,用来完成SQL语句的执行
 4         QueryRunner qr = new QueryRunner();
 5         //执行SQL语句
 6         String sql = "DELETE FROM student WHERE name = ?";
 7         Object[] params = {"张三"};
 8         Connection conn = JDBCUtils.getConnection();
 9         int line = qr.update(conn, sql, params);
10         //结果集的处理
11         System.out.println("line="+line);
12     } catch (SQLException e) {
13         throw new RuntimeException(e);
14     }
15 }
 
4、QueryRunner实现查询操作
· query(Connection conn,String sql,ResultSetHandler<T> rsh,Object... params), 用来完成表数据的查询操作。
 
4.1 ResultSetHandler结果集处理类
 

ArrayHandler

将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

ArrayListHandler

将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

BeanHandler

将结果集中第一条记录封装到一个指定的javaBean中。

BeanListHandler

将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

ColumnListHandler

将结果集中指定的列的字段值,封装到一个List集合中

ScalarHandler

它是用于单数据。例如select count(*) from 表操作。

MapHandler

将结果集第一行封装到Map集合中,Key 列名, Value 该列数据

MapListHandler

将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

 
4.2 ArrayHandler与ArrayListHandler查询
  数据库初始值:
  
ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值.
 
1 //采用ArrayHandler处理结果集
2 public static void ArrayHandler()throws SQLException{
3     QueryRunner qr = new QueryRunner();
4     String sql = "select* from book ";
5     Object[] objects= qr.query(con,sql, new ArrayHandler());
6     for (Object object : objects) {
7         System.out.print(object+"	");
8     }
9 }

  

ArrayListHandler:将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中

 1 //采用ArrayListHandler处理结果
 2     public static void ArrayListHandler()throws SQLException{
 3         QueryRunner qr = new QueryRunner();
 4         String sql = "select* from book ";
 5         List<Object[]> objects= qr.query(con,sql, new ArrayListHandler());
 6         for (Object[] object : objects) {
 7             for (Object o : object) {
 8                 System.out.print(o+"	");
 9             }
10             System.out.println("
");
11         }
12     }

4.3  BeanHandler与BeanListHandler查询

BeanHandler :将结果集中第一条记录封装到一个指定的javaBean中。

1 //采用BeanHandler处理结果集
2     public static void BeanHandler()throws SQLException{
3         QueryRunner qr = new QueryRunner();
4         String sql = "select * from book";
5         Sort s = qr.query(con,sql,new BeanHandler<Sort>(Sort.class));
6         System.out.println(s);
7     }

BeanListHandler :将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

1 //采用BeanListHandler处理结果集
2     public static void BeanListHandler()throws SQLException{
3         QueryRunner qr = new QueryRunner();
4         String sql = "select * from book";
5         List<Sort> list= qr.query(con,sql,new BeanListHandler<Sort>(Sort.class));
6         for (Sort sort : list) {
7             System.out.println(sort);
8         }
9     }

4.4 ColumnListHandler与ScalarHandler查询

ColumnListHandler:将结果集中指定的列的字段值,封装到一个List集合中

 1 //采用ColumnListHandler处理结果集
 2     public static void ColumnListHandler()throws SQLException{
 3         QueryRunner qr = new QueryRunner();
 4         String sql = "select * from book where price=?";
 5         Object[] obj ={"89"}; //指定列
 6         List<String> s= qr.query(con,sql,new ColumnListHandler<String>(),obj);
 7         for (String s1 : s) {
 8             System.out.println(s1);
 9         }
10     }

ScalarHandler:它是用于单数据。例如select count(*) from 表操作。

1 //采用ScalarHandler处理结果集
2     public static void ScalarHandler()throws SQLException{
3         QueryRunner qr = new QueryRunner();
4         String sql = "select count(*) from book ";
5         long s = qr.query(con,sql,new ScalarHandler<Long>());
6         System.out.println(s);
7     }

4.5 MapHandler和MapListHandler查询

MapHandler:将结果集第一行封装到Map集合中,Key 列名, Value 该列数据

//采用MapHandler处理结果集
    public static void MapHandler()throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "select * from book";
        Map<String,Object> map = qr.query(con,sql,new MapHandler());
        for (String key : map.keySet()) {
            System.out.println(key+"...."+map.get(key));
        }
    }

MapListHandler:将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

 //采用MapListHandler处理结果集
    public static void MapListHandler()throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "select * from book";
        List<Map<String,Object>> list = qr.query(con,sql,new MapListHandler());
        for (Map<String, Object> map : list) {
            for (String s : map.keySet()) {
                System.out.print(s+".."+map.get(s)+"	");
            }
            System.out.println();
        }
    }

原文地址:https://www.cnblogs.com/liyushan/p/11351537.html