使用mybatis的延遲載入,需要兩個步驟:
1.在全域性配置檔案中新增一下語句(lazyLoadingEnabled預設為false,aggressiveLazyLoading預設為true)
<settings>
<!-- 延遲載入總開關 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 侵入式延遲 -->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
2.寫好對映檔案
<resultMap type="User" id="CacheTest">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="birthday" property="birthday" />
<result column="address" property="address" />
<!-- column相當於傳入parameter ofType相當於resultType -->
<collection property="orderList" column="id" ofType="Order"
select="resultMap.resultMapMapper.CacheTestSelect">
<result column="number" property="number" />
<result column="createtime" property="createtime" />
</collection>
</resultMap>
<select id="CacheTest" resultMap="CacheTest">
select * from user
</select>
<select id="CacheTestSelect" parameterType="int" resultType="Order">
select * from orders where user_id = #{id}
</select>
這樣查詢一開始會執行select * from user
然後當讀取到orderList時才會執行select * from orders where user_id = #{id}