欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Dbutils如何使用

程序员文章站 2022-09-05 13:14:16
**一、Dbutils是什么**DBUtils:是Java编程中的数据库操作实用工具, 主要是封装了JDBC的代码,简化dao层的操作。DBUtils是由Apache公司所提供的。作用:1.对于数据表的读操作,它可以把结果转换成List,Array,Set等java集合,便于程序员操作2.简单化对于数据表的写操作(只需写sql语句)3.可以使用数据源,使用JNDI, 数据库连接池等技术来优化性能——重用已经构建好的数据库连接对象,而不像php,asp那样费时费力的不断重复构建和析构这样的对象*...

一、Dbutils是什么

DBUtils:是Java编程中的数据库操作实用工具, 主要是封装了JDBC的代码,简化dao层的操作。DBUtils是由Apache公司所提供的。
作用:1.对于数据表的读操作,它可以把结果转换成List,Array,Set等java集合,便于程序员操作
2.简单化对于数据表的写操作(只需写sql语句)
3.可以使用数据源,使用JNDI, 数据库连接池等技术来优化性能——重用已经构建好的数据库连接对象,而不像php,asp那样费时费力的不断重复构建和析构这样的对象

二、Dbutils的三个核心类

1.DbUtils:启动类
连接数据库对象——jdbc辅助方法的集合类,线程安全
构造方法:DbUtils()
作用:控制连接,控制输入,控制驱动加载一个类
2.QueryRunner:执行SQL语句的类
SQL语句的操作对象,可以设置查询结果集的封装策略,线程安全。其一共有六种方法,execute(执行SQL语句),batch(批量处理语句),insert(执行INSERT语句),insertBatch(批量处理INSERT语句),query(SQL中 SELECT 语句),update(SQL中 INSERT, UPDATE, 或 DELETE 语句),其中query()、update() 两个方法最常用。
构造方法:
(1)QueryRunner():创建一个与数据库无关的QueryRunner对象,后期再操作数据库的后,需要手动给一个Connection对象,它可以手动控制事务。
Connection.setAutoCommit(false);:设置手动管理事务。
Connection.commit();:提交事务。
(2)QueryRunner(DataSource ds):创建一个与数据库关联的queryRunner对象,后期再操作数据库的时候,不需要Connection对象,自动管理事务。
DataSource:数据库连接池对象。

构造函数与增删改查方法的组合:

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

3.ResultSetHandle:实现类
封装数据的策略对象——将封装在结果集中的数据,转换到另一个对象。
策略:封装数据到对象的方式
构造方法:handle(ResultSet rs)

三、Dbutils基础使用

注意事项:
1.需要导入的jar包:①MySql驱动 ②c3p0包 ③DbUtils包
2.添加c3p0配置文件
3.可以自行添加一个JDBCUtils工具类:用来获取c3p0连接池对象
4.DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应
5.DBUtils执行插入操作的时候,无法返回自增主键,可以通过变通的方法来实现,例如在MySQL中,执行完了一个插入SQL后,接着执行SELECT LAST_INSERT_ID()语句,就可以获取到自增主键
6.DBUtils可以将结果集封装为各种类型,主要有:Bean/List,Map/List/Map,数组/List<数组>,列/List<列>这些类型
7.DBUtils是JDBC的简单封装,可以和JDBC混合使用。DBUtils的性能和JDBC性能是一样,测试过程中没发现性能损失,拥有了很高性能的同时,而不失JDBC的灵活性

四、代码演示

c3p0-config.xml

 <? xml version ="1.0" encoding= "UTF-8" ?>
< c3p0-config>
       <!-- 默认配置,c3p0框架默认加载这段默认配置 -->
       < default-config>
             <!-- 配置JDBC 四个基本属性 -->
             < property name ="driverClass" >com.mysql.jdbc.Driver</ property >
             < property name ="jdbcUrl" >jdbc:mysql:///数据库名</ property >
             <!--username : 你的数据库用户名 -->
             < property name ="user" >username</ property >
             <!--password : 你的数据库密码 -->
             < property name ="password" >password</ property >
       </ default-config> <!-- This app is massive! -->
</ c3p0-config> 

JDBCUtils. Java

package cn.utils;

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JDBCUtils {
    // 获得c3p0连接池对象
    private static ComboPooledDataSource ds = new ComboPooledDataSource();
    /**
     * 获得数据库连接对象
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    /**
     * 获得c3p0连接池对象
     * @return
     */
    public static DataSource getDataSource() {
        return ds;
    }
}

本文地址:https://blog.csdn.net/weixin_45513236/article/details/108980230