在mybatis中,resultMap标签 的association标签和collection标签具有延迟加载的功能。
查询所有订单信息和其用户信息
订单mapper类中定义通过userid查询用户的方法
public User findUserById(int id);
用户mapper类中定义查询所有Ordres的方法
public List<Orders> findOrdersById04_lazyload();
分别在其sql映射xml文件中规定sql语句
<select id="findUserById" parameterType="int" resultType="User">
select * from user where id=#{id}
</select>
<resultMap id="lazyloadingResultMap" type="Orders">
<id column="id" property="id"></id>
<result column="userid" property="user_id"/>
<result column="createtime" property="createtime"/>
<collection property="user" select="edu.ccit.cn.mapper.UserMapper.findUserById" column="user_id"></collection>
</resultMap>
<select id="findOrdersById04_lazyload" resultMap="lazyloadingResultMap">
select * from orders
</select>
在MyBatis全局配置文件中开启懒加载(默认关闭)
<settings>
<!-- 打印查询语句 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
<!-- 允许懒加载 -->
<setting name="lazyLoadingEnabled" value="true"/>
</settings>