数据库工具--DBUtils工具类的使用

1. DBUtils概述

  DBUtils 是 JDBC的一个简化开发工具包.使用DBUtils需要导入的jar包:commons-dbutils-1.4.jar

  核心类:QueryRunner

  包 org.apache.commons.dbutils
  java.lang.Object
    |--org.apache.commons.dbutils.AbstractQueryRunner
        |--org.apache.commons.dbutils.QueryRunner

  

  构造方法:

    QueryRunner(DataSource ds),接收数据源,可使用DBCP,C3P0等工具获得.

  常用API:

    1. 查询

    <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)

      执行sql中封装的查询语句,sql语句采用预处理对象带参形式,将sql语句中的参数通过params传入,并返回结果对象,根据ResultSetHandler传入的实现类不同,结果对象可以是对象集合或者单个对象

    <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)

      这个方法可使得调用者控制连接的获得与关闭,并可同时开启一个事务.

    2. 更新

    int update(String sql, Object... params)

      可以进行插入,更新,删除等操作.返回被影响的数据条数.

    int update(Connection conn, String sql, Object... params)

      这个方法可使得调用者控制连接的获得与关闭,并可同时开启一个事务.

  

    3.关于结果集处理

  

    Interface ResultSetHandler<T>

      T为作为输入的结果集将要转换成的目标对象类型.

      T handle(ResultSet rs) 该方法接收sql语句的查询结果ResultSet,并将结果集转化成具体类型的对象

    ResultSetHandler的三个常用实现类

      a.BeanHandler<T>

        构造方法 :BeanHandler(Class<T> type)

          type为将要目标JavaBean的字节码

        实现方法:T handle(ResultSet rs)

          使用type类型字节码构造一个目标类JavaBean对象,并把查询得到的结果集的第一行的记录的内容封装这个对象中,作为返回值返回给调用者query,并作为query的返回结果.

      b.BeanListHandler<T>

        与BeanHandler类似,只不过是返回的是目标类JavaBean的List集合.

      c.ScalarHandler

        这个类用于处理查询语句中使用聚合函数的情况,使用无参构造函数创建ScalarHandler对象时,它的handle方法将返回查询结果第一列的内容.

  

  DBUtils工具类

    DBUtils工具类提供了一些关于事务操作的方法,可以方便处理异常等.

    static void commitAndClose(Connection conn) throws SQLException提交并关闭,如果有异常抛出

    static commitAndCloseQuietly(Connection conn)  提交并关闭,如果有异常不做任何处理

    static rollbackAndClose(Connection conn) throws SQLException 回滚并关闭,如果有异常抛出

    static rollbackAndCloseQuietly(Connection conn)  回滚并关闭,如果有异常不做任何处理

    

    

2.Demo演示

  使用DBUtils结合C3P0,对数据库分别进行了增删改查的操作,并演示了各个API的用法

  JavaBean的结构如下,为了方便演示,重写了toString方法,数据库表结构与Bean相同.

 1 public class User {
 2     private int id;
 3     private String name;
 4     public int getId() {
 5         return id;
 6     }
 7     public void setId(int id) {
 8         this.id = id;
 9     }
10     public String getName() {
11         return name;
12     }
13     public void setName(String name) {
14         this.name = name;
15     }
16     @Override
17     public String toString() {
18         return "User [id=" + id + ", name=" + name + "]";
19     }
20 }

数据库的操作如下:(C3P0获取数据源的操作省略)

 1 package com.itheima.dbutils;
 2
 3 import java.sql.SQLException;
 4 import java.util.List;
 5
 6 import org.apache.commons.dbutils.QueryRunner;
 7 import org.apache.commons.dbutils.handlers.BeanHandler;
 8 import org.apache.commons.dbutils.handlers.BeanListHandler;
 9 import org.apache.commons.dbutils.handlers.ScalarHandler;
10 import org.junit.Test;
11
12 public class DBUtilsDemo {
13     QueryRunner runner = new QueryRunner(C3P0Utils.getDataSource());
14     @Test
15     public void add(){
16         try {
17             String sql = "insert into t_user(name) values(?)";
18             Object[] params = {"White"};
19             int r = runner.update(sql,params);
20             System.out.println(r);
21         } catch (SQLException e) {
22             throw new RuntimeException(e);
23         }
24     }
25     @Test
26     public void delete(){
27         try {
28             String sql = "delete from t_user where id=?";
29             Object[] params = {4};
30             int r = runner.update(sql,params);
31             System.out.println(r);
32         } catch (SQLException e) {
33             throw new RuntimeException(e);
34         }
35     }
36     @Test
37     public void update(){
38         try {
39             String sql = "update t_user set name=? where id=?";
40             Object[] params = {"Jane",2};
41             int r = runner.update(sql,params);
42             System.out.println(r);
43         } catch (SQLException e) {
44             throw new RuntimeException(e);
45         }
46     }
47     @Test
48     public void select1(){
49         try {
50             String sql = "select * from t_user  where id=?";
51             Object[] params = {2};
52             User user= runner.query(sql,new BeanHandler<User>(User.class),params);
53             System.out.println(user);
54         } catch (SQLException e) {
55             throw new RuntimeException(e);
56         }
57     }
58     @Test
59     public void select2(){
60         try {
61             String sql = "select * from t_user ";
62             Object[] params = {};
63             List<User> userList= runner.query(sql,new BeanListHandler<User>(User.class),params);
64             for(User user:userList)
65             System.out.println(user);
66         } catch (SQLException e) {
67             throw new RuntimeException(e);
68         }
69     }
70     @Test
71     public void select3(){
72         try {
73             String sql = "select count(*) from t_user ";
74             Object[] params = {};
75             Long count=(Long) runner.query(sql,new ScalarHandler(),params);
76             System.out.println(count);
77         } catch (SQLException e) {
78             throw new RuntimeException(e);
79         }
80     }
81 }

     

    

时间: 2024-08-10 19:04:34

数据库工具--DBUtils工具类的使用的相关文章

DButils工具类可以用来获取数据库连接向数据库插入更新删除对象2

package com.ctl.util; import java.awt.Color; import java.awt.Font; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.*; import java.lang.reflect.*; import java.sql.*; import java.text.SimpleD

开源工具DbUtils的使用(数据库的增删改查)

一.DbUtils简介: DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味.最容易出错的一大部分工作. 下载地址:http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi 下载上图中的红框部分,然后解压.解压之后的文件如下 : 上图中红框部分的文件就是我们所需要的内容. 二.核心方法: Db

JDBC : 使用DBUtils 工具类

所需jar包 : commons-dbutils-1.6.jar DbUtils类  1.DbUtils :提供如关闭连接.装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的.主要方法如下: -public static void close(-) throws java.sql.SQLException: DbUtils类提供了三个重载的关闭方法.这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭Connection.Statement和ResultSet. -pu

MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4085684.html 联系方式:[email protected] [正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的

数据库实用小工具之-DBUtils简单入门

1 DBUtils简介 DBUtils是Apache Commons组件中的一员,开源免费! DBUtils是对JDBC的简单封装,但是它还是被很多公司使用! DBUtils的Jar包:dbutils.jar 2 DBUtils主要类 ? DbUtils:都是静态方法,一系列的close()方法: ? QueryRunner: ? update():执行insert.update.delete: ? query():执行select语句: ? batch():执行批处理. OK,我们卡死写一个例

《转载》开源工具DbUtils的使用(数据库的增删改查)

本文转载自https://www.cnblogs.com/smyhvae/p/4085684.html https://www.cnblogs.com/wang-meng/p/5525389.html Bean实体的不规范写法,所导致的奇葩SQLException [正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的时才

java学习笔记之DBUtils工具类

DBUtils工具类 一.介绍 DBUtils是Apache组织开源的数据库工具类. 二.使用步骤 ①.创建QueryRunner对象 ②.调用update()方法或者query()方法执行sql语句 三.构造方法及静态方法 QueryRunner类 1.构造方法 ①.无参构造 QueryRunner qr =new  QueryRunner(); 使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式 ②.有参构造 QueryRunner

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

上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自己的存款 主键 帐户名 余额 1 张三 1000 2 李四 10 要从张三的账户余额中转账800到李四账户 SQL语句实现: update xx set 余额 = 余额-800 where 主键=1 update xx set 余额 = 余额+800 where 主键=2 虽然操作成功,但是会出现问

Dbutils工具类的使用

一.什么是Dbutils? Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能.来源百度百科 简而言之,Dbutils就是封装了jdbc的代码,简化了jdbc的dao层的操作. 二.Dbutils的使用 A:导入相关的依赖jar包 mysql-connector-java-5.1.7-bin.jar commons-dbutils-1.7.jar B:项目结构 StudentDao接口:对