Java学习之DBUtils、DBCP

DBUtils 

    第三方类库 是数据库的工具类

    简化数据库操作的代码和JDBC连接的代码

    操作数据库的三个核心类 

    1.DBUtils      关闭数据库

closeQuietly 不会抛出异常

不会抛出SQLException异常

    2.QueryRunner 负责查询的对象    

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

传入sql可以使用占位符(?)来代替

通过参数3 把要替换的占位符的值传进去

    3.ResultSetHandle 查询结果的返回值

是一个接口 需要使用它的实现类(8个) query(Connection conn, String sql,     ResultSetHandler<T> rsh, Object... params)


    QueryRunner以及DBUtils的使用示例

    // 创建QueryRunner对象
    QueryRunner queryRunner = new QueryRunner();
    String sql = "insert into goods values (null,?,?,?)";
    // 替换占位符
    Object[] obj = {"糖",4,"好吃不贵"};
    // 调用执行sql语句的方法
    int row = queryRunner.update(connection, sql,obj);
    // 处理返回的结果
    System.out.println(row);
    // 关闭资源
    DbUtils.closeQuietly(connection);


ResultSetHandle的8个实现类

    

    ArrayHandler

        该方法使用ArrayHandle()类查询时

会返回数据库中的一条记录

并且会把该条记录的字段放入一个Object数组中

    

    ArrayListHandler

    List<Object[]> query = queryRunner.query(connection, sql, new ArrayListHandler());
    for (Object[] objects : query) {
	    System.out.println(Arrays.toString(objects));
    }

    集合中的每一个Object[]就是数据库中的一条记录

    

    BeanHandler

    // 可以将查询结果 帮你放进实体对象中
    // 参数 是放入的对象的实体类的 .class 文件类型
    Goods g = queryRunner.query(connection, sql, new BeanHandler<Goods>(Goods.class));
    System.out.println(g);
       BeanListHandler
    ArrayList<Goods> list = (ArrayList<Goods>) queryRunner.query(connection, sql, new BeanListHandler<>(Goods.class));
    for (Goods goods : list) {
	    System.out.println(goods);
    }

    ColumnListHandler

    // ColumnListHandler 把数据库中的一列数据 放入集合中给你返回
    // 默认第一列 可以传入列名
    List<Object> list = queryRunner.query(connection, sql, new ColumnListHandler<>("sname"));
    for (Object object : list) {
	    System.out.println(object);
    }
       ScalarHandler  
    // 测试ScalarHandler
    // 该方法放回的类型是Long
    Long query = queryRunner.query(connection, sql, new ScalarHandler<Long>(1));
    System.out.println(query);

    MapHandler

    Map<String, Object> query = queryRunner.query(connection, sql, new MapHandler());
    Set<String> keySet = query.keySet();
    for (String string : keySet) {
	    System.out.println(string + query.get(string));
    }

    MapListHandler

    ArrayList<Map<String, Object>> query = (ArrayList<Map<String, Object>>) queryRunner.query(connection, sql, new MapListHandler());
    for (Map<String, Object> map : query) {
	    for (String key : map.keySet()) {
		    System.out.print(key + "   " + map.get(key) + ",");
	    }
	    System.out.println();
    }


DataSource(数据源 数据库连接池)

    数据库连接池中,保存了许多的连接(Connection)。在操作数据库时,最耗费资源的是创建连接和销毁连接。当用户需要做查询数据库的操作时,会从连接池中取出来一个使用。使用完毕后不会销毁这个连接,而是从新放入连接池中备用。

 

    java为数据库连接池,准备了一套规范(接口)。这套规范也是由数据库厂商实现,并且该类也提供了获取连接的方法。常用的数据库连接池:DBCPC3P0。


获取DataSource的工具类
    public class DataSourceUtil {
    // 声明一个BasicDataSource
    private static BasicDataSource dataSource = new BasicDataSource();
	
    private DataSourceUtil() {
		
    }
	
    // 设置dataSource
    static {
	    // 基础设置
	    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	    dataSource.setUrl("jdbc:mysql://localhost:3306/myjdbc01");
	    dataSource.setUsername("root");
	    dataSource.setPassword("123456");
		
	    // 扩展设置(初始化多少个连接)
	    // 初始化连接数量
	    dataSource.setInitialSize(10);
	    // 设置最大连接数量
	    dataSource.setMaxActive(8);
	    // 设置最大空闲连接数量
	    dataSource.setMaxIdle(5);
	    // 设置最小空闲连接数量
	    dataSource.setMinIdle(1);
    }
	
    // 获取数据源的方法
    public static DataSource getDataSource() {
	    return dataSource;
    }
    }










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值