文章插圖

文章插圖
一、Mybatis 延遲加載策略
1.1 何為延遲加載?
延遲加載:就是在需要用到數據時才進行加載,不需要用到數據時就不加載數據 。延遲加載也稱懶加載 。
好處:先從單表查詢,需要時再從關聯表去關聯查詢,大大提高數據庫性能,因為查詢單表要比關聯查詢多張表速度要快 。
壞處: 因為只有當需要用到數據時,才會進行數據庫查詢,這樣在大批量數據查詢時,因為查詢工作也要消耗時間,所以可能造成用戶等待時間變長,造成用戶體驗下降 。
1.2 實現需求:
需求:查詢賬戶(Account)信息并且關聯查詢用戶(User)信息 。如果先查詢賬戶(Account)信息即可滿足要求,當我們需要查詢用戶(User)信息時再查詢用戶(User)信息 。把對用戶(User)信息的按需去查詢就是延遲加載 。
1.3 使用 assocation 實現延遲加載:
1.3.1 賬戶的持久層 DAO 接口:
我們需要在 Mybatis 的配置文件 SqlMapConfig.xml 文件中添加延遲加載的配置:
1.4 使用 Collection 實現延遲加載:
1.4.1 在 User 實體類中加入 List<Account>屬性
1.4.2 編寫用戶和賬戶持久層接口的方法
1.4.3 編寫用戶持久層映射配置:
二、Mybatis 緩存
2.1 Mybatis 一級緩存:一級緩存是 SqlSession 范圍的緩存,當調用 SqlSession 的修改,添加,刪除,commit(),close()等方法時,就會清空一級緩存 。
2.2.1 二級緩存的開啟與關閉:
2.2.1.1 第一步:在 SqlMapConfig.xml 文件開啟二級緩存
第3章 Mybatis 注解開發
3.1 mybatis 的常用注解說明:
@Insert:實現新增
@Update:實現更新
@Delete:實現刪除
@Select:實現查詢
@Result:實現結果集封裝
@Results:[email protected] 一起使用,封裝多個結果集
@ResultMap:實現引用
@Results 定義的封裝
@One:實現一對一結果集封裝
@Many:實現一對多結果集封裝
【mybatis 是否支持延遲加載?延遲加載的原理是什么 mybatis延遲加載的作用】@SelectProvider: 實現動態 SQL 映射
@CacheNamespace:實現注解二級緩存的使用
3.2 使用 Mybatis 注解實現基本 CRUD:
3.2.1 編寫實體類
3.2.2 使用注解方式開發持久層接口:
3.2.2.1 查詢所有用戶:
3.2.4 編寫測試方法
3.3 使用注解實現復雜關系映射開發:
3.3.1 復雜關系映射的注解說明:
需求: 加載賬戶信息時并且加載該賬戶的用戶信息,根據情況可實現延遲加載 。(注解方式實現)
3.3.2.1 添加 User 實體類及 Account 實體類:
3.3.3 使用注解實現一對多復雜關系映射:
需求: 查詢用戶信息時,也要查詢他的賬戶列表 。使用注解方式實現 。
分析: 一個用戶具有多個賬戶信息,所以形成了用戶(User)與賬戶(Account)之間的一對多關系 。
3.3.3.1 User 實體類加入 List<Account>:
select 屬性:代表將要執行的 sql 語句
fetchType 屬性:代表加載方式,一般如果要延遲加載都設置為 LAZY 的值
3.3.3.3 編寫賬戶的持久層接口并使用注解配置
3.3.3.4 添加測試方法
- 中國51區震驚世界
- 怎么知道前任是否想要復合 前女友想復合的暗示
- 一男子抓到一只龍圖片是否真的
- 一男子抓到一只龍圖片是否真的 一男子抓到一只龍圖片
- 如何查奶粉是否含激素
- 如何判定兩個人三觀是否一致 如何判定兩人三觀一致
- 姚安娜為什么要進娛樂圈 任正非支持姚安娜進圈
- 金牛座四月月運勢如何/請問各位,金牛座4月份運勢如何,是否適合找工作
- 5%葡萄糖是否是等滲溶液 5%葡萄糖是等滲溶液嗎
- 為什么QQ星座運勢很準,它是否監測了你的手機?!qq怎么測今日運勢
