数据库连接池操作

一,C3p0Xml工具类
  步骤:
    1,在成员位置创建一个静态的ComboPooledDataSource对象
    2,把c3p0xml文件复制到src根目录下
    3,定义静态方法,从CPDS对象中获取Connection对象并返回
    4,定义静态方法释放资源

二,DbUtils
  1,概述:
    DBUtils是java中数据库操作的使用工具,DBUtils封装了JDBC操作,简化了JDBC操作,可以减少些许代码,它是阿帕奇公司的commons组件---》JDBC的6步减为3步
  2,三个核心功能:
    QueryRunner,提供了SQL语句操作的API
    ResultSetHandler,接口,用于select操作后怎样封装结果集
    DBUtils工具类,关闭资源,事物的处理方法
  3,准备数据
  4,QueryRunner--》new QueryRunner(DataSource),传DataSource 连接池参数
    update(String sql 语句,Object…prams 占位符数据); DML增删改操作
    query(String sql语句,ResultSetHandler 结果集,Object prams 占位符数据); 查
  5,步骤:
    1》创建QueryRunner对象,空参,需要获取连接对象;有参,传连接池参数
      QueryRunner qr = new QueryRunner();
      Connection conn = C3P0xmlUtils.getConnection();

      QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
    2》调用QR对象.方法处理,update(); query();
    3》处理结果
  6,用DBUtils查询
    java.bean 建立类与数据库表相对应。把查询表的结果取出,存入java.bean对象中并返回。
    构造:
      BeanHandler(Class<T> type) 传递java.bean的class文件对象 Product.class
    类型:
      List<Products> list = qr.query("select * from products where flag=?", new BeanListHandler<>(Products.class), 1);
      BeanHandler 获取第一行数据---》第一行
      BeanListHandler 获取所有行数据---》List集合
      ScalarHandler 获取单一返回情况:
        1,聚合函数 count sum avg max min
        2,select pname from product where pid=?
      ColumnListHandler 用于查询指定列,数据存入List集合中

三,SpringTemplate
  spring.jdbc.Spring 框架对JDBC简单的封装提供了JDBCTemplate对象,简化JDBC操作开发
  使用:
    1,导包
    2,创建JDBCTemplate对象,依赖数据源连接池DataSource
      new JDBCTemplate(ds);
    3,调用JDBCTemplate对象.方法来完成CRUD操作
      update(); 增,删,改
      query(); 查,将查询结果封装成java.bean对象
      queryForMap(); 只能用于查指定一行,将查询结果封装到Map集合--》列名为键,值为value 存到Map集合
      queryForList(); 查询所有,将结果封装到List集合--》将每一条记录封装Map集合,再封装到List集合
      queryForObject(); 查询单一,用于聚合函数。 将结果封装成对象


public class Demo01Template {
  JdbcTemplate jt = new JdbcTemplate(C3p0XmlUtils.getDataSources());

  @Test
  public void testInsert(){
    String sql="insert into products(pid,pname,price,category_cid,flag) values (?,?,?,?,?)";
    int row = jt.update(sql, 11, "奶茶", 3, "c04", 0);
    System.out.println(row+"行添加成功");
  }
  @Test
  public void testU(){
    int row = jt.update("update products set flag=? where pid=?", 1, 10);
    System.out.println(row +"行修改成功");
  }

  @Test
  public void testD(){
    int row = jt.update("delete from products where price=?", 5000);
    System.out.println(row + "行删除成功");
  }
  @Test
  public void testShow(){
    List<Map<String, Object>> maps = jt.queryForList("select * from products");
    for (Map<String,Object> m:maps){
    System.out.println(m);
    }
  }
  @Test
  public void test02(){
    Map<String, Object> map = jt.queryForMap("select * from products where pid=10");
    System.out.println(map);
  }
}

原文地址:https://www.cnblogs.com/kide1412/p/11019954.html