做什么网站,国外做图标网站,房地产定制开发,用vue框架做的网站目录
引入
一、事务存在的意义
1.事务是什么#xff1f;
2.Mybatis关于事务的管理
程序员自己控制处理的提交和回滚 引入 一、事务存在的意义
1.事务是什么#xff1f;
多个操作同时进行,那么同时成功#xff0c;那么同时失败。这就是事务。
事务有四个特性#xf…目录
引入
一、事务存在的意义
1.事务是什么
2.Mybatis关于事务的管理
程序员自己控制处理的提交和回滚 引入 一、事务存在的意义
1.事务是什么
多个操作同时进行,那么同时成功那么同时失败。这就是事务。
事务有四个特性一致性、持久性、原子性、隔离性
比如有一个订单业务 1.订单表当中添加一条记录 2.商品数量数据更新(减少) 3..... 当多个任务同时进行操作的时候这些任务只能同时成功或者同时失败即引入中的转账操作。
2.Mybatis关于事务的管理
MyBatis框架中的事务默认是手动提交的也就是每次编写程序都需要调用commit()方法提交事务。
程序员自己控制处理的提交和回滚
SqlMapConfig.xml文件中配置
transactionManager typeJDBC/transactionManager 》程序员自己控制处理的提交和回滚 设置自动提交事务可以通过openSession的方法进行设置openSession(true) 自动提交事务。代码如下配置中的策略不变
public class UserTest {private InputStream in null;private SqlSession session null;private UserDao mapper null;Before //前置通知, 在方法执行之前执行public void init() throws IOException {//加载主配置文件目的是为了构建SqlSessionFactory对象in Resources.getResourceAsStream(SqlMapConfig.xml);//创建SqlSessionFactory对象SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);//通过SqlSessionFactory工厂对象创建SqlSesssion对象session factory.openSession(true); //关闭//通过Session创建UserDao接口代理对象mapper session.getMapper(UserDao.class);}After //After: 后置通知, 在方法执行之后执行 。public void destory() throws IOException {//释放资源session.close();in.close();}Testpublic void insertMoreByList(){User user1 new User(a1,男,北京);User user2 new User(a2,男,北京);User user3 new User(a3,男,北京);ListUser users Arrays.asList(user1,user2,user3);int result mapper.insertMoreByList(users);//session.commit(); //手动提交事务System.out.println(result);}}为了程序安全性在涉及commit()事务提交的方法中配置 Testpublic void Insert(){User usernew User(aa,new Date(),男,保定);mapper.insert(user);try{session.commit();//事务提交}catch (Exception e){session.rollback();//回滚一旦发现try中的语句没执行成功立刻回滚程序}finally {if(session!null){session.close();}}}