JavaWeb学习笔记(十七)之ApacheDbutils

ApacheDbutils重点类

DbUtils:连接数据库对象——jdbc辅助方法的集合类,线程安全

构造方法:DbUtils()
作用:控制连接,控制书屋,控制驱动加载额一个类。

QueryRunner:SQL语句的操作对象,可以设置查询结果集的封装策略,线程安全。

构造方法:

  • QueryRunner():创建一个与数据库无关的QueryRunner对象,后期再操作数据库的会后,需要手动给一个Connection对象,它可以手动控制事务。
    Connection.setAutoCommit(false); 设置手动管理事务
    Connection.commit(); 提交事务

  • QueryRunner(DataSource ds):创建一个与数据库关联的queryRunner对象,后期再操作数据库的时候,不需要Connection对象,自动管理事务。
    DataSource:数据库连接池对象。

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

  • QueryRunner()
    update(Connection conn, String sql, Object… params)
    query(Connection conn, String sql, ResultSetHandler rsh, Object… params)

  • QueryRunner(DataSource ds):已经连接了就不需要再连接了。
    update(String sql, Object… params)
    query(String sql, ResultSetHandler rsh, Object… params)

ResultSetHandler:封装数据的策略对象——将封装结果集中的数据,转换到另一个对象

注意!
DbUtils给我们提供了10个ResultSetHandler实现类,分别是:

  • ArrayHandler: 将查询结果的第一行数据,保存到Object数组中
  • ArrayListHandler 将查询的结果,每一行先封装到Object数组中,然后将数据存入List集合
  • BeanListHandler 将查询结果的每一行封装到user对象,然后再存入List集合
  • ColumnListHandler 将查询结果的指定列的数据封装到List集合中
  • MapHandler 将查询结果的第一行数据封装到map结合(key等于列名,value等于列值)
  • MapListHandler 将查询结果的每一行封装到map集合(key等于列名,value等于列值),再将map集合存入List集合
  • BeanMapHandler 将查询结果的每一行数据,封装到User对象,再存入mao集合中(key等于列名,value==列值)
  • KeyedHandler 将查询的结果的每一行数据,封装到map1(key等于列名,value等于列值 ),然后将map1集合(有多个)存入map2集合(只有一个)
  • ScalarHandler 封装类似count、avg、max、min、sum…函数的执行结果
代码示例:
//DataSorceUtil.java

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.io.InputStream;
import java.util.Properties;

public class DataSourceUtil {
   
    public static DataSource getDataSourceWithC3P0() throws PropertyVetoException {
   
        ComboPooledDataSource c3p0 = new ComboPooledDataSource();
        c3p0.setDriverClass("com.mysql.cj.jdbc.Driver");
        c3p0.setJdbcUrl("jdbc:mysql://localhost:3306/sqltest?serverTimezone=GMT%2B8");
        c3p0.setUser("root");
        c3p0.setPassword("root");

        return c3p0;
    }


    public static DataSource getDateSourceWithC3P0ByConfig() {
   
        ComboPooledDataSource c3p0 = new ComboPooledDataSource("rj");
        return c3p0;
    }

    public static DataSource getDataSourceWithDBCP() {
   
        BasicDataSource dbcp = new BasicDataSource();

        dbcp.setDriverClassName("com.mysql.cj.jdbc.Driver")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值