Java中对JDBC进行简单封装的dbutils

dbutils简介

Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。

在java世界里操作数据库有很多方式,在众多方式中除了JDBC外都有DataSource对象。
DataSource可以看作数据源,它封装了数据库参数,连接数据库,程序中操作DataSource对象即可对数据库进行增删改查操作。
DataSource实际上是一个接口,实现这个接口必须重写getConnection方法,即可以获得Connection对象,有了Connection对象即可以对数据库操作。

我们一般和c3p0一起使用dbutils,c3p0是连接池,可以为我们提供DataSource对象,它的DataSource类是com.mchange.v2.c3p0.ComboPooledDataSource

使用方法

准备

首先我们新建maven工程,导入mysql、dbutils、c3p0的jar包
然后对c3p0进行配置:在resources文件夹下新建c3p0-config.xml配置文件,写入以下内容

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
    <default-config>
               
        <property name="user">用户名</property>
        //数据库用户名

           
        <property name="password">密码</property>
        //数据库密码

           
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC</property>
        //jdbc数据库连接地址

           
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        //加载相应数据库驱动

           
        <property name="checkoutTimeout">30000</property>
        //当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。

           
        <property name="idleConnectionTestPeriod">30</property>
        //每个几秒检查所有连接池中的空闲连接

           
        <property name="initialPoolSize">3</property>
        //连接池初始化时创建的连接数

           
        <property name="maxIdleTime">30</property>
        //连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接如果为0,则永远不会断开连接

           
        <property name="maxPoolSize">100</property>
        连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大

           
        <property name="minPoolSize">2</property>
        连接池保持的最小连接数,后面的maxIdleTimeExcessConnections跟这个配合使用来减轻连接池的负载

            
        <property name="acquireIncrement">5</property>
        //连接池在无空闲连接可用时一次性创建的新数据库连接数
        <property name="maxIdleTimeExcessConnection">25</property>
        //单位秒,为了减轻连接池的负载,当连接池经过数据访问高峰创建了很多连接,但是后面连接池不需要维护这么多连接,必须小于maxIdleTime.配置不为0,则将连接池的数量保持到minPoolSize

    </default-config>
</c3p0-config>
使用

新建QueryRunner对象

private QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());

ComboPooledDataSource就算c3p0为我们提供的dataSource对象。

QueryRunner对象的方法:

QueryRunner(DataSource ds) ; //传入参数为连接池提供的dataSource对象
QueryRunner(); //无参构造函数,在执行sql语句时,第一个参数必须是Connection对象
update(String sql, Object… params); //执行insert update delete操作
query(String sql, ResultSetHandler rsh, Object… params) ; //执行 select操作

ResultSetHandler 实现类

ArrayHandler:把结果集中的第一行数据转成对象数组。
ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。 //重点
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。//重点
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。//重点
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler:将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。
ScalarHandler:将结果集第一行的某一列放到某个对象中。//重点

然后就可以通过queryRunner运行sql语句了。例如:

queryRunner.query("select * from account where id = ?",new BeanHandler<Account>(Account.class),109);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值