OrderMapper.xml文件的配置:
<!-- 2 延迟加载resultMap的配置 -->
<resultMap type="com.shi.pojo.Order" id="selectOrderLazyLodingFindUser">
<!-- 对订单信息进行映射配置 -->
<id column="id" property="id"/>
<result column="user_id" property="user_id"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<!-- 3 实现用户信息的延迟加载
property:指定哪个属性需要延迟加载
select:指定延迟加载需要执行的statement的id
(使用别的映射文件中的statement的id需要指定namespace)
column:是订单信息中关联查询用户信息的列(就是上面的user_id)
-->
<association property="user" select="com.shi.mapper.UserMapper.selectUserByIdOrder" column="user_id">
</association>
</resultMap>
<!-- 1 先去查询订单表的信息 -->
<select id="selectOrderLazyLoding" resultMap="selectOrderLazyLodingFindUser">
select * from orders
</select>
UserMapper.xml文件的配置:
<mapper namespace="com.shi.mapper.UserMapper">
<!-- 通过id查询用户的信息 -->
<select id="selectUserByIdOrder" parameterType="int" resultType="com.shi.pojo.User">
select * from user where id=#{user_id}
</select>
</mapper>
注意:还要在sqlMapperConfig.xml文件中配置;
<!-- 配置延迟加载 -->
<settings>
<!-- 大家延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 取消积极加载 ,改为消极加载 ,即 按需加载-->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
思考: