一、Mybatis 延遲載入策略
1.1 何為延遲載入?
延遲載入:就是在需要用到數據時才進行載入,不需要用到數據時就不載入數據。延遲載入也稱懶載入。
好處:先從單表查詢,需要時再從關聯表去關聯查詢,大大提高資料庫性能,因為查詢單表要比關聯查詢多張錶速度要快。
壞處: 因為只有當需要用到數據時,才會進行資料庫查詢,這樣在大批量數據查詢時,因為查詢工作也要消耗時間,所以可能造成用戶等待時間變長,造成用戶體驗下降。
1.2 實現需求:
需求:查詢賬戶(Account)信息並且關聯查詢用戶(User)信息。如果先查詢賬戶(Account)信息即可滿足要求,當我們需要查詢用戶(User)信息時再查詢用戶(User)信息。把對用戶(User)信息的按需去查詢就是延遲載入。
1.3 使用 assocation 實現延遲載入:
1.3.1 賬戶的持久層 DAO 介面:

1.3.2 賬戶的持久層映射文件:

1.3.3 用戶的持久層介面和映射文件:

1.3.4 開啟 Mybatis 的延遲載入策略:
我們需要在 Mybatis 的配置文件 SqlMapConfig.xml 文件中添加延遲載入的配置:

1.3.5 編寫測試方法
1.4 使用 Collection 實現延遲載入:
1.4.1 在 User 實體類中加入 List<Account>屬性
1.4.2 編寫用戶和賬戶持久層介面的方法
1.4.3 編寫用戶持久層映射配置:

1.4.4 編寫賬戶持久層映射配置:

1.4.5 編寫測試方法
二、Mybatis 緩存
2.1 Mybatis 一級緩存:一級緩存是 SqlSession 範圍的緩存,當調用 SqlSession 的修改,添加,刪除,commit(),close()等方法時,就會清空一級緩存。

2.2 Mybatis 二級緩存:二級緩存是 mapper 映射級別的緩存,多個SqlSession去操作同一個 Mapper 映射的 sql 語句,多個 SqlSession 可以共用二級緩存,二級緩存是跨 SqlSession 的。
2.2.1 二級緩存的開啟與關閉:
2.2.1.1 第一步:在 SqlMapConfig.xml 文件開啟二級緩存

2.2.1.2 第二步:配置相關的 Mapper 映射文件

2.2.1.3 第三步:配置 statement 上面的 useCache 屬性

2.2.2 二級緩存注意事項:當我們在使用二級緩存時,所緩存的類一定要實現 java.io.Serializable 介面,這樣就可以使用序列化方式來保存對象。
第3章 Mybatis 註解開發
3.1 mybatis 的常用註解說明:
@Insert:實現新增
@Update:實現更新
@Delete:實現刪除
@Select:實現查詢
@Result:實現結果集封裝
@Results:可以與@Result 一起使用,封裝多個結果集
@ResultMap:實現引用
@Results 定義的封裝
@One:實現一對一結果集封裝
@Many:實現一對多結果集封裝
@SelectProvider: 實現動態 SQL 映射
@CacheNamespace:實現註解二級緩存的使用
3.2 使用 Mybatis 註解實現基本 CRUD:
3.2.1 編寫實體類
3.2.2 使用註解方式開發持久層介面:
3.2.2.1 查詢所有用戶:

3.2.2.2 根據id查詢一個用戶:

3.2.2.3 保存和更新操作:

3.2.2.4 刪除操作和使用聚合函數

3.2.2.4 模糊查詢操作:

3.2.3 編寫 SqlMapConfig 配置文件
3.2.4 編寫測試方法
3.3 使用註解實現複雜關係映射開發:
3.3.1 複雜關係映射的註解說明:

3.3.2 使用註解實現一對一複雜關係映射及延遲載入:
需求: 載入賬戶信息時並且載入該賬戶的用戶信息,根據情況可實現延遲載入。(註解方式實現)
3.3.2.1 添加 User 實體類及 Account 實體類:


3.3.2.2 添加賬戶的持久層介面並使用註解配置

3.3.2.3 添加用戶的持久層介面並使用註解配置:

3.3.2.4 測試一對一關聯及延遲載入
3.3.3 使用註解實現一對多複雜關係映射:
需求: 查詢用戶信息時,也要查詢他的賬戶列表。使用註解方式實現。
分析: 一個用戶具有多個賬戶信息,所以形成了用戶(User)與賬戶(Account)之間的一對多關係。
3.3.3.1 User 實體類加入 List<Account>:

3.3.3.2 編寫用戶的持久層介面並使用註解配置

@Many:
select 屬性:代表將要執行的 sql 語句
fetchType 屬性:代表載入方式,一般如果要延遲載入都設置為 LAZY 的值
3.3.3.3 編寫賬戶的持久層介面並使用註解配置
3.3.3.4 添加測試方法
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/203548.html
微信掃一掃
支付寶掃一掃