使用前提
需要在sqlMapConfig.xml配置文件中开启延迟加载
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
需求:
通过订单延迟加载相应的用户信息
POJO类
public class Customer {
private Long cid;
private String cname;
private int cage;
//get/set方法
}
public class Order {
private Long oid;
private String oname;
private Customer customer;
private Integer cno;
//get/set方法
}
映射文件
<!‐‐
订单映射文件
select属性:查询用户信息延迟加载的实现
column属性:查询用户信息需要传递的参数,该参数从先加载的订单信息中获取.
‐‐>
<mapper namespace="com.qzw.dao.IOrderDao">
<resultMap type="com.qzw.bean.Order" id="orderCustomerMap">
<id property="oid" column="oid"/>
<result property="oname" column="oname"/>
<association
property="customer"
javaType="com.qzw.bean.Customer"
select="com.qzw.dao.ICustomerDao.selectCustomerById"
column="cno">
</association>
</resultMap>
<select id="selectOrderList" resultMap="orderCustomerMap">
select * from tb_order;
</select>
</mapper>
<!‐‐ 用户映射文件 ‐‐>
<select id="selectCustomerById" parameterType="int" resultType="com.qzw.bean.Customer">
select * from tb_customer where cid = #{id};
</select>
测试
@Test
public void selectOrderList(){
List<Order> list = orderDao.selectOrderList();
//会触发查询用户信息
list.get(0).getCustomer();
}
一对一延迟加载(没必要)