连接池(DataSource)
目的是为了节省创建连接和销毁连接所需要花费的时间 提高程序的执行效率
DruidDataSource
创建连接池对象
1:
DruidDataSource d = new DruidDataSource();
d.setDriverClassName();
d.setUrl()
d.setUserName()
d.setPassword()
2: 准备一个db.properties
Properties p = new Properties();
p.load("src/db.properties"):
DruidDataSource d = DruidDataSourceFactory.createDataSource(p);
C3P0
1:
ComboPooledDataSource d = new ComboPooledDataSource();
d.setDriveClass()
d.setJdbcUrl()
d.setUser()
d.setPassword()
2: 在src下面 准备c3p0-config.xml
ComboPooledDataSource d = new ComboPooledDataSource();
ComboPooledDataSource d = new ComboPooledDataSource(String DataSource);
DButils工具类
QueryRunner
QueryRunner() 需要事务管理
QueryRunner(DataSource ds) 不需要事务管理
//可以实现增删改操作
update(String sql,Object...params)
update(Connection conn,String sql,Object...params)
//实现查询操作
query(String sql,ResultSetHandler rs,Object...params)
query(Connection conn,String sql,ResultSetHandler rs,Object...params)
ResultSetHandler是一个接口 该接口中有一个抽象方法handle()
作业:自定义实现类实现ResultSetHandler接口并重写其handle方法(方法体的实现参看下午demo1)
ArrayHandler 把每条表记录封装到一个Object数组中
ArrayListHandler 把每条表记录封装到一个Object数组中 再把所有数组放入list集合中
BeanHandler 把每条表记录的字段封装到指定类型的属性上
BeanListHandler 把每条表记录的字段封装到指定类型的属性上 并且把多个该类型的对象放入list集合中
MapHandler 把每条表记录的字段名和字段值放入到Map集合中
MapListHandler 把每条表记录的字段名和字段值放入到Map集合中 再把所有的Map集合封装到List集合中
//了解
columnListHandler 封装指定列的查询记录
scalarHandler 查询单值记录
keyedHandler 把查询到的每条记录放入Map集合中 再把该Map集合放入外层Map集合的value位置 key是指定列名称