@Test
public void testTransaction(){
//获取一个数据库连接,事务前提必须是同一个连接
Connection connection = JDBCUtils.getConnection();
QueryRunner qr=new QueryRunner();
String sql="INSERT INTO `bookstore`.`user`(`userId`,`userName`,`password`,`email`)VALUES (?,?,?,?)";
String sql2="INSERT INTO `bookstore`.`user`(`userId`,`userName`,`password`,`email`)VALUES (?,?,?,?)";
//正确的数据
User user1=new User(42, "事务失败", "abc123", "6167@qq.com");
//强制模拟异常情况(41是已经存在的主键id,所以会报SqlException)
User user2=new User(41, "事务失败", "abc123", "6167@qq.com");
try {
//开始事务,手动提交事务
connection.setAutoCommit(false);
//使用Connection对象,进行数据库操作。。。
qr.update(connection, sql, user1.getId(),user1.getUserName(),user1.getPassword(),user1.getEmail());
qr.update(connection, sql2, user2.getId(),user2.getUserName(),user2.getPassword(),user2.getEmail());
//回滚事务
connection.commit();
} catch (SQLException e) {
if(connection!=null){
try {
connection.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}finally {
JDBCUtils.releaseConnection(connection);
}
}
事务
最新推荐文章于 2019-09-11 10:30:24 发布