SqlMapConfig.xml中的懒加载配置:
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 将积极加载改为消极加载,即按需加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
mapper.xml中的懒加载配置:
<!-- 延迟加载的resultMap -->
<resultMap type="com.itcast.mybatis.po.orders" id="findOrdersuserLazyLoading">
<!-- 对订单信息进行映射配置 -->
<id column="id" property="id"/>
<result column="users_id" property="users_id"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<!-- 对用户信息进行延迟加载
select:指定延迟加载所需要执行的statement的id(是根据user_id查询用户信息的statement)
column:订单信息中关联用户信息查询的列,是user_id
关联查询的sql理解为:
select orders.*,
(select username from users where orders.users_id=users.id) username,
(select sex from users where orders.users_id=users.id)sex
from orders
-->
<association property="user" javaType="com.itcast.mybatis.po.users" select="findUserById" column="users_id">
<!-- 实现对用户信息进行延迟加载 -->
</association>
</resultMap>
<!-- 查询订单关联查询用户,用户信息需要延迟加载 -->
<select id="findOrdersuserLazyLoading" resultMap="findOrdersuserLazyLoading">
select * from orders
</select>
<select id="findUserById" parameterType="int" resultType="com.itcast.mybatis.po.users">
select * from users where id=#{id}
</select>