DBUtils
增删改
//dbutils 只是帮我们简化了CRUD 的代码, 但是连接的创建以及获取工作。 不在他的考虑范围 QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource()); //增加 //queryRunner.update("insert into account values (null , ? , ? )", "aa" ,1000); //删除 //queryRunner.update("delete from account where id = ?", 5); //更新 //queryRunner.update("update account set money = ? where id = ?", 10000000 , 6);
查询
直接new接口的匿名实现类
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource()); Account account = queryRunner.query("select * from account where id = ?", new ResultSetHandler
(){ @Override public Account handle(ResultSet rs) throws SQLException { Account account = new Account(); while(rs.next()){ String name = rs.getString("name"); int money = rs.getInt("money"); account.setName(name); account.setMoney(money); } return account; } }, 6); System.out.println(account.toString()); 直接使用框架已经写好的实现类。
查询单个对象
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
//查询单个对象 Account account = queryRunner.query("select * from account where id = ?", new BeanHandler(Account.class), 8);查询多个对象
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
List list = queryRunner.query("select * from account ", new BeanListHandler(Account.class));
ResultSetHandler 常用的实现类
以下两个是使用频率最高的
BeanHandler, 查询到的单个数据封装成一个对象BeanListHandler, 查询到的多个数据封装 成一个List <对象>对象>
ArrayHandler, 查询到的单个数据封装成一个数组ArrayListHandler, 查询到的多个数据封装成一个集合 ,集合里面的元素是数组。 MapHandler, 查询到的单个数据封装成一个mapMapListHandler,查询到的多个数据封装成一个集合 ,集合里面的元素是map。
ColumnListHandler
KeyedHandler ScalarHandler总结
事务
使用命令行演示使用代码演示
脏读、
不可重复读、
幻读
丢失更新悲观锁乐观锁4个隔离级别 读未提交 读已提交 可重复读 可串行化
数据连接池
DBCP
不使用配置
使用配置
C3P0
不使用配置
使用配置 (必须掌握)
自定义连接池
装饰者模式
DBUtils
简化了我们的CRUD , 里面定义了通用的CRUD方法。
queryRunner.update();queryRunner.query