Mybatis有哪些演示读写问题以及案例?

69 篇文章 0 订阅
9 篇文章 0 订阅

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值