数据库连接池操作
一,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);
}
}