java学习笔记之DBUtils工具类

Posted xuzhaocai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记之DBUtils工具类相关的知识,希望对你有一定的参考价值。

DBUtils工具类

一.介绍

  DBUtils是Apache组织开源的数据库工具类。

二.使用步骤

  ①.创建QueryRunner对象

  ②.调用update()方法或者query()方法执行sql语句

三.构造方法及静态方法

  QueryRunner类

  1.构造方法

    ①.无参构造

      QueryRunner qr =new  QueryRunner();

     使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式

    ②.有参构造

      QueryRunner  qr= new QueryRunner(DataSource  dataSource);

      这个参数是连接池对象

  2.静态方法

    ①.int  update(Connection  con ,String sql ,Param);

      该方法用于增删改语句的操作

      参数介绍:

      参数一:连接池对象(这个在无参构造的时候使用)

      参数二:sql语句

      参数三:可变参数(就是sql占位符的值)

      返回值:int类型的  返回受影响的行数

   简单update  demo

 1 public class Demo {
 2     public static void main(String[] args) throws Exception {
 3         /*
 4          * 演示有参构造的update()方法
 5          * 
 6          * 首先得导入jar包
 7          * 配置好C3P0的配置文件与准备好C3P0工具类
 8          * 然后创建QueryRunner对象
 9          * 调用update方法
10          * 最后处理结果
11          */
12         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
13         int re = qr.update("update user set name=? where uid=?","张三",2);
14         if(re>0){
15             System.out.println("修改成功");
16         }else {
17             System.out.println("修改失败");
18         }
19     }
20 }

  附上简单的C3P0工具类

 1 public class C3P0Utils {
 2     private  static DataSource dataSource=new ComboPooledDataSource();
 3     /**
 4      * 获得DataSource实现类对象
 5      * @return
 6      */
 7     public static DataSource getDataSource(){
 8         return dataSource;
 9     }
10     /**
11      * 获得连接
12      * @return
13      * @throws Exception
14      */
15     public static Connection getConnection()throws Exception{
16         return dataSource.getConnection();
17     }
18 }

 

   ②.query(Connection con , String sql  ,Param ...)

      该方法用于出查询操作

      参数介绍:

        参数一:Connection  数据库连接对象, 使用带参构造时可以不用

        参数二:sql语句      

        参数三:表示对结果集的处理方式 (ResultSetHandler接口)

            ArrayHandler: 表示将结果集第一行的数据存入数组
            ArrayListHandler 将结果集每一行的数据存入数组,多个数组存入集合 List<Object[]>

            BeanHandler 表示将结果集第一行的数据存入Java Bean对象
            BeanListHandler 表示将结果集每一行的数据存入Java Bean对象 ,多个对象存入集合

            ColumnListHandler 表示将某一列的数据存入集合


            MapHandler 表示将结果集第一行的数据存入Map集合 :键:列名 值:列的值
            MapListHandler 表示将结果集每一行的数据存入Map集合 多个Map存入List集合 List<Map<,>>

            ScalarHandler 获取一个值: count(*) sum(price)

       参数四:可变参数(就是sql占位符的值)

      使用BeanListHandler处理方式的demo:

1     public void demo1() throws Exception{
2         QueryRunner qr = new QueryRunner(MyC3P0Utils.getDataSource()); 
3         List<Car> list = qr.query("select * from car where price<20 order by price desc", new BeanListHandler<>(Car.class));
4         for (Car car : list) {
5             System.out.println(car);
6         }
7     
8     }

 

      javaBean类的编写:

 1 public class Car {
 2     private  int  cid;
 3     private String  cname;
 4     private String  company;
 5     private String grade;
 6     private double price;
 7     @Override
 8     public String toString() {
 9         return "Car [cid=" + cid + ", cname=" + cname + ", company=" + company + ", grade=" + grade + ", price=" + price
10                 + "]";
11     }
12     public int getCid() {
13         return cid;
14     }
15     public void setCid(int cid) {
16         this.cid = cid;
17     }
18     public String getCname() {
19         return cname;
20     }
21     public void setCname(String cname) {
22         this.cname = cname;
23     }
24     public String getCompany() {
25         return company;
26     }
27     public void setCompany(String company) {
28         this.company = company;
29     }
30     public String getGrade() {
31         return grade;
32     }
33     public void setGrade(String grade) {
34         this.grade = grade;
35     }
36     public double getPrice() {
37         return price;
38     }
39     public void setPrice(double price) {
40         this.price = price;
41     }
42     public Car(int cid, String cname, String company, String grade, double price) {
43         super();
44         this.cid = cid;
45         this.cname = cname;
46         this.company = company;
47         this.grade = grade;
48         this.price = price;
49     }
50     public Car() {
51         super();
52         // TODO Auto-generated constructor stub
53     }
54 
55 }

 

   














以上是关于java学习笔记之DBUtils工具类的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记49(DBUtils工具类二)

day14_DBUtils学习笔记

Java基础学习笔记二十七 DBUtils和连接池

java学习笔记数据库连接池与操作工具类

java学习日记(day30--dbutils)

Java实战之04JavaWeb-06DBUtils