Mybatis有哪些演示读写问题以及案例?
Mybatis演示读写问题
一、演示脏读
1.分别开启两个dos窗口 A.B
2.先查看两个窗口的隔离级别 select @@tx_isolation;
3.设置A窗口的隔离级别为未提交读 set session transaction isolation level read uncommitted;
4.分别在两个窗口开启事务 start transaction;
5.在B窗口完成转账操作
update account set money = money - 1000 where name = ‘张森’;
update account set money = money + 1000 where name = ‘凤姐’;
6.在A窗口查询数据 select * from account; – A事务读到了B事务还没有提交的数据;
二、演示避免脏读,演示不可重复读发送
1.分别开两个窗口,A.B
2设置A窗口的隔离级别:read committed set session transaction isolation level read committed;
3.分别在两个窗口开启事务 start transaction;
4.在B窗口完成转账
update account set money = money - 1000 where name = ‘张森’;
update account set money = money + 1000 where name = ‘凤姐’;
5.在A窗口进行查询 select * from account; – 避免脏读.
6.在B窗口提交事务 commit;
7.在A窗口中再次查询 select * from account; – 转账成功.(不可重复读:一个事务读到另一个事务中已经提交的update的数据,导致多次查询结果不一致.)
三、避免脏读和不可重复读,演示虚读
1.分别开启两个窗口,A.B
Mybatis有哪些演示读写问题以及案例?
Mybatis演示读写问题
一、演示脏读
1.分别开启两个dos窗口 A.B
2.先查看两个窗口的隔离级别 select @@tx_isolation;
3.设置A窗口的隔离级别为未提交读 set session transaction isolation level read uncommitted;
4.分别在两个窗口开启事务 start transaction;
5.在B窗口完成转账操作
update account set money = money - 1000 where name = ‘张森’;
update account set money = money + 1000 where name = ‘凤姐’;
6.在A窗口查询数据 select * from account; – A事务读到了B事务还没有提交的数据;
二、演示避免脏读,演示不可重复读发送
1.分别开两个窗口,A.B
2设置A窗口的隔离级别:read committed set session transaction isolation level read committed;
3.分别在两个窗口开启事务 start transaction;
4.在B窗口完成转账
update account set money = money - 1000 where name = ‘张森’;
update account set money = money + 1000 where name = ‘凤姐’;
5.在A窗口进行查询 select * from account; – 避免脏读.
6.在B窗口提交事务 commit;
7.在A窗口中再次查询 select * from account; – 转账成功.(不可重复读:一个事务读到另一个事务中已经提交的update的数据,导致多次查询结果不一致.)
三、避免脏读和不可重复读,演示虚读
1.分别开启两个窗口,A.B
2.设置A窗口的隔离级别:repeatable read set session transaction isolation level repeatable read;
3.分别在两个窗口中开启事务 start transaction;
4.在B窗口完成转账的操作
update account set money = money - 1000 where name = ‘张森’;
update account set money = money + 1000 where name = ‘凤姐’;
5.在A窗口查询 select * from account; – 转账没有成功:避免脏读.
6.在B窗口提交事务 commit;
7.在A窗口再次查询 select * from account; – 转账没有成功:避免不可重复读.
java语言基础篇
KuangXiang
98元0人已购详情
四、避免虚读
1.分别开启两个窗口,A.B
2.设置A窗口的隔离级别:repeatable read set session transaction isolation level repeatable read;
3.分别在两个窗口中开启事务 start transaction;
4.在B窗口完成插入操作 insert into account values (null,‘王老师’,10000);
5.在A中进行查询操作 select * from account; – 没有查询到任何结果
6.在B窗口提交事务 commit; – A窗口马上就会显示数据
转账案例
(一)
步骤分析
创建一个页面
导入JDBC相关jar包和工具类
创建包结构
提交到Servlet->Service->Dao
页面的跳转
(二)
1,事务管理分析
原始处理方式,在service层开启事务,然后操作表。
(service层)
2.把Connection对象绑定在当前线程
(JDBCUtils改造)
(service层代码)
(Dao层代码)
3.利用DbUtils实现
1、没有事务管理
2、有事务管理
(service层)
有需要更多Java架构师资料的朋友可以私信我哦,资料见下图
END