DBUtils

1、概述

DBUtils是JDBC的简化开发工具包。DBUtils封装了对JDBC的操作,简化了JDBC的操作,可以少些代码。

DBUtils有三个核心功能:

  • QueryRunner中提供了对sql语句操作的API
  • ResultSetHandler接口,用于确定如何对select语句的结果集进行封装
  • DBUtils类,它是一个工具类,定义了关闭资源和处理事务的方法

2、QueryRunner核心类

  • update(Connection conn, String sql, Object ... params),用来完成表数据的增加、删除和更新操作
  • query(Connetion conn, String sql, ResultSetHandler<T> rsh, Object ... params),用来完成表数据的查询操作

3、QueryRunner实现添加、更新、删除操作

添加

 1 package jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.SQLException;
 5 
 6 import org.apache.commons.dbutils.DbUtils;
 7 import org.apache.commons.dbutils.QueryRunner;
 8 
 9 /**
10  * <p>Description:QueryRunner类insert演示 </p>
11  * @author Administrator
12  * @date 2018年11月5日下午3:24:14
13  */
14 public class QueryRunnerInsert {
15 
16     public static void main(String[] args) throws SQLException {
17         // 获取一个用于执行sql语句的对象,使用QueryRunner
18         QueryRunner qr = new QueryRunner();
19         // sql语句
20         String sql = "insert into sort(sname,sprice,sdesc) values(?,?,?)";
21         Object[] params = {"head first 设计模式",73,"java设计模式"};
22         // 获得连接
23         Connection conn = JDBCUtils.getConnection();
24         int row = qr.update(conn, sql, params);
25         System.out.println(row);
26         // 关闭资源
27         DbUtils.closeQuietly(conn);
28     }
29 
30 }

更新

 1 package jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.SQLException;
 5 
 6 import org.apache.commons.dbutils.DbUtils;
 7 import org.apache.commons.dbutils.QueryRunner;
 8 
 9 /**
10  * <p>Description:QueryRunner类的update操作演示 </p>
11  * @author Administrator
12  * @date 2018年11月5日下午3:34:29
13  */
14 public class QueryRunnerUpdate {
15 
16     public static void main(String[] args) throws SQLException {
17         // 创建sql语句执行对象,QueryRunner
18         QueryRunner qr = new QueryRunner();
19         // sql语句
20         String sql = "update sort set sprice=? where sname=?";
21         // 设置占位符实际参数
22         Object[] params = {89, "head first 设计模式"};
23         // 获得连接
24         Connection conn = JDBCUtils.getConnection();
25         // 执行sql语句
26         int row = qr.update(conn, sql, params);
27         System.out.println(row);
28         // 关闭资源
29         DbUtils.closeQuietly(conn);
30     }
31 
32 }

删除

 1 package jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.SQLException;
 5 
 6 import org.apache.commons.dbutils.DbUtils;
 7 import org.apache.commons.dbutils.QueryRunner;
 8 
 9 /**
10  * <p>Description:QueryRunner类delete操作演示 </p>
11  * @author Administrator
12  * @date 2018年11月5日下午3:41:10
13  */
14 public class QueryRunnerDelete {
15 
16     public static void main(String[] args) throws SQLException {
17         // 创建sql语句执行对象
18         QueryRunner qr = new QueryRunner();
19         // sql语句
20         String sql = "delete from sort where sname=?";
21         // 设置占位符实际参数
22         String sname = "疯狂Java讲义";
23         // 获得连接
24         Connection conn = JDBCUtils.getConnection();
25         // 执行sql语句
26         int row = qr.update(conn, sql, sname);
27         System.out.println(row);
28         // 关闭资源
29         DbUtils.closeQuietly(conn);
30     }
31 
32 }

4、QueryRunner类实现查询操作

ResultSetHandler结果集处理类

ArrayHandler 将结果集的第一条记录封装到一个Object[]数组中,数组中每个元素就是这条记录中的每个字段的值
ArrayListHandler 将结果集的每一条记录都封装到一个Object[]数组中,再将这些数组封装到List集合中
BeanHandler 将结果集中的第一条记录封装到一个指定的javaBean中
BeanListHandler 将结果集中的每一条记录封装到一个指定的javaBean中,再将这些javaBean封装到List集合中
ColumeListHandler 将结果集中指定列字段的值,封装到一个List集合中
ScalarHandler 用于单数据。例如select count(*) from表操作
MapHandler 将结果集的第一条记录封装到一个Map集合中,key列名,value列数据
MapListHandler  将结果集的每一条封装到一个指定的Map集合中,再将Map集合存储到List中

 

 

 

 

 

 

 

 

 

JavaBean

JavaBean就是一个类,在开发中用于封装数据。具有如下特点:

  1. 需要实现接口:java.io.Serializable,通常实现接口步骤省略不写。
  2. 提供私有的字段:private 类型 字段名
  3. 提供getter/setter方法
  4. 提供空参构造方法
 1 package jdbc;
 2 /**
 3  * <p>Description:Sort实体类 </p>
 4  * @author Administrator
 5  * @date 2018年11月4日下午9:40:58
 6  */
 7 public class Sort {
 8     private int sid;            // id
 9     private String sname;        // 名字
10     private double sprice;        // 价格
11     private String sdesc;        // 描述
12     
13     public Sort(int sid, String sname, double sprice, String sdesc) {
14         super();
15         this.sid = sid;
16         this.sname = sname;
17         this.sprice = sprice;
18         this.sdesc = sdesc;
19     }
20 
21     // 空参构造
22     public Sort() {}
23     
24     public int getSid() {
25         return sid;
26     }
27     public void setSid(int sid) {
28         this.sid = sid;
29     }
30     public String getSname() {
31         return sname;
32     }
33     public void setSname(String sname) {
34         this.sname = sname;
35     }
36     public double getSprice() {
37         return sprice;
38     }
39     public void setSprice(double sprice) {
40         this.sprice = sprice;
41     }
42     public String getSdesc() {
43         return sdesc;
44     }
45     public void setSdesc(String sdesc) {
46         this.sdesc = sdesc;
47     }
48     
49     @Override
50     public String toString() {
51         return "Sort [sid=" + sid + ", sname=" + sname + ", sprice=" + sprice + ", sdesc=" + sdesc + "]";
52     }
53 }

ArrayHandler查询

 1 package jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.SQLException;
 5 import java.util.Arrays;
 6 
 7 import org.apache.commons.dbutils.DbUtils;
 8 import org.apache.commons.dbutils.QueryRunner;
 9 import org.apache.commons.dbutils.handlers.ArrayHandler;
10 
11 /**
12  * <p>Description:ArrayHandler处理结果集演示 </p>
13  * @author Administrator
14  * @date 2018年11月5日下午4:14:06
15  */
16 public class ArrayHandlerDemo {
17 
18     public static void main(String[] args) throws SQLException {
19         // 创建QueryRunner类对象
20         QueryRunner qr = new QueryRunner();
21         // sql语句
22         String sql = "select * from sort";
23         Object[] params = {};
24         // 获得连接
25         Connection conn = JDBCUtils.getConnection();
26         // 执行sql语句
27         Object[] objArray = qr.query(conn, sql, new ArrayHandler(), params);
28         // 处理结果集
29         System.out.println(Arrays.toString(objArray));
30         // 关闭资源
31         DbUtils.closeQuietly(conn);
32     }
33 
34 }

ArrayListHandler查询

 1 package jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.SQLException;
 5 import java.util.Arrays;
 6 import java.util.List;
 7 
 8 import org.apache.commons.dbutils.DbUtils;
 9 import org.apache.commons.dbutils.QueryRunner;
10 import org.apache.commons.dbutils.handlers.ArrayListHandler;
11 
12 /**
13  * <p>Description:ArrayListHandler类处理结果集演示 </p>
14  * @author Administrator
15  * @date 2018年11月5日下午4:22:06
16  */
17 public class ArrayListHandlerDemo {
18 
19     public static void main(String[] args) throws SQLException {
20         // 创建sql语句执行对象
21         QueryRunner qr = new QueryRunner();
22         // sql语句
23         String sql = "select * from sort";
24         Object[] params = {};
25         // 获得连接
26         Connection conn = JDBCUtils.getConnection();
27         // 执行sql语句
28         List<Object[]> list = qr.query(conn, sql, new ArrayListHandler(), params);
29         // 遍历list集合单独取到每一条记录
30         for (Object[] objArray: list) {
31             System.out.println(Arrays.toString(objArray));
32         }
33         // 关闭资源
34         DbUtils.closeQuietly(conn);
35     }
36 
37 }

 

posted @ 2018-11-05 16:01  AlphaJunS  阅读(240)  评论(0编辑  收藏  举报