mybatis 延遲加載
1. 概述
- 直接加載:查詢時直接將所有信息全部查詢出來。
- 侵入式延時加載:任何方法的調用都會加載該對象的所有屬性。
- 延遲加載:每個屬性會按需加載,使用時才會從數據庫獲取該屬性。
2. demo
2.1 Mybatis 延遲加載實現
<settings> <setting name="logImpl" value="LOG4J"/> <!-- 延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。 特定關聯關系中可通過設置 fetchType 屬性來覆蓋該項的開關狀態。 默認為false --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 侵入式加載開關 當開啟時,任何方法的調用都會加載該對象的所有屬性。 否則,每個屬性會按需加載(參考 lazyLoadTriggerMethods)。 默認為true; --> <setting name="aggressiveLazyLoading" value="false"/> </settings>
2.2 數據庫表
User表:

Order表

2.3 直接加載
<settings> <setting name="logImpl" value="LOG4J"/> </settings>
2.4 侵入式延遲加載
<settings> <setting name="logImpl" value="LOG4J"/> <!-- 延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。 特定關聯關系中可通過設置 fetchType 屬性來覆蓋該項的開關狀態。 默認為false --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 侵入式加載開關 當開啟時,任何方法的調用都會加載該對象的所有屬性。 否則,每個屬性會按需加載(參考 lazyLoadTriggerMethods)。 默認為true; --> <setting name="aggressiveLazyLoading" value="true"/> </settings>
2.5 延遲加載
<settings> <setting name="logImpl" value="LOG4J"/> <!-- 延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。 特定關聯關系中可通過設置 fetchType 屬性來覆蓋該項的開關狀態。 默認為false --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 侵入式加載開關 當開啟時,任何方法的調用都會加載該對象的所有屬性。 否則,每個屬性會按需加載(參考 lazyLoadTriggerMethods)。 默認為true; --> <setting name="aggressiveLazyLoading" value="false"/> </settings>
3.延遲加載實現(mapper.xml)
4.延遲加載實現(注解)
浙公網安備 33010602011771號