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