1、事务
* 使用步骤:
* 1、开启新事务
* 取消隐式事务自动提交的功能
* setAutoCommit(false);
* 2、编写组成事务的一组sql语句
* 3、结束事务
* commit();提交
* rollback();回滚
* 细节:要求开启事务的连接对象和获取命令的连接对象必须是同一个否则事务无效
2、批处理
* 案例:向admin表中插入5万行数据
* 相关API:
* addBatch();
* executeBatch();
* clearBatch();
* 说明:批处理往往和PreparedStatement一起搭配使用,可以既减少编译次数,又减少运行次数,效率大大提高
@Test//用批处理
public void testBatch() throws Exception {
Connection connection = JDBCUtils.getConnection();
//执行插入
PreparedStatement statement = connection.prepareStatement("insert into admin values(null,?,?)");
for(int i =1;i<=50000;i++) {
statement.setString(1, "jhon"+i);
statement.setString(2,"0000");
statement.addBatch();//添加sql语句到批处理中
if(i%1000==0) {
statement.executeBatch();//执行批处理包中的sql数据
statement.clearBatch();//清空批处理包中的sql语句
}
}
JDBCUtils.close(null, statement, connection);
}
3、Blob类型数据的读写
4、数据库连接池
数据库连接池:数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
例如:Druid连接池,C3P0连接池,dbcp连接池
5、DBUtils
* 功能:封装了和数据库存取的相关的一些方法
* 通用的增删改查等等
主要API:
* QueryRunner类
* update(连接对象connection,sql语句 ,parmas占位符的值);执行任何增删改语句
* query(connection,sql,ResultSetHandler处理结果的处理器,parmas占位符的值);执行任何查询语句
* ResultSetHandler接口
* BeanHandler:将结果集的第一行,封装成对象,并返回.
new BeanHandler<>(xx.class);
//必须有对应类文件,且属性与字段一致
* BeanListHandler:将结果集的所有行封装成对象的集合,并返回,
new BeanListHandler<>(xx.class);
//必须有对应类文件,且属性与字段一致
* ScalarHandler将结果集中的第一行第一列,以object形式返回 new ScalarHandler();