延迟加载 一对一 一对多 多对多 例子
<!-- 延迟加载用户信息 -->
<resultMap type="Order" id="OrderUserMapLazy" autoMapping="true">
<id column="id" property="id"/>
<!-- 对用户延迟加载 -->
<!-- select负责引用需要延迟加载的语句
用户表信息需要传入id 需要订单表负责传递
开启延迟加载
-->
<association property="user" javaType="User" select="queryUser"
column="user_id">
</association>
</resultMap>
<!-- 查询订单信息 -->
<select id="findOrderUserByNumberLazy" resultMap="OrderUserMapLazy">
select * from tb_order where order_number = #{number}
</select>
<!-- 延迟加载用户信息 -->
<select id="queryUser" resultType="User">
select * from tb_user where id=#{id}
</select>
<!-- 一对多延迟加载订单详情 -->
<resultMap type="Order" id="OrderUserDetailMapLazy" autoMapping="true">
<id column="id" property="id"/>
<!-- 延时加载用户信息 -->
<association property="user" javaType="User" select="query_User"
column="user_id">
</association>
<!-- 延时加载订单详情 订单详情的id和订单表中的id重复 所以起别名-->
<collection property="orderdetail" javaType="List" ofType="Orderdetail"
select="query_Detail" column="detail_id">
</collection>
</resultMap>
<!-- sql语句 -->
<select id="findOrderUserDetailByNumberLazy" resultMap="OrderUserDetailMapLazy">
select *,id as detail_id from tb_order where order_number = #{number}
</select>
<!-- queryUser -->
<select id="query_User" resultType="User">
select * from tb_user where id=#{id}
</select>
<!-- 延时加载订单详情 -->
<select id="query_Detail" resultType="Orderdetail">
select * from tb_orderdetail where id=#{id}
</select>
<!-- 多对多延迟加载 -->
<!-- 定义订单的resultmap -->
<resultMap type="Order" id="OrderUserDetailItemMapLazy1" autoMapping="true">
<id column="id" property="id"/>
<!-- 对用户信息进行延迟加载 -->
<association property="user" javaType="User" select="query_User2"
column="user_id">
</association>
<collection property="orderdetail" javaType="List" ofType="Orderdetail"
select="query_Detail2" column="detail_id">
</collection>
</resultMap>
<resultMap type="orderdetail" id=""></resultMap>
<select id="findOrderUserDetailItemByNumberLazy" resultMap="OrderUserDetailItemMapLazy1">
select *,id as detail_id from tb_order where order_number=#{number}
</select>
<!-- query_User2 -->
<select id="query_User2" resultType="User">
select * from tb_user where id=#{id}
</select>
<!-- query_Detail2 -->
<select id="query_Detail2" parameterType="ItemMap1">
select * from tb_orderdetail where id=#{id}
</select>