MyBatis之一对多抓取策略
MyBatis之一对多抓取策略
1.情况描述
如果只需要使用一方中的数据,而不使用多方数据的情况下,在执行过程中不需要发送查询多方的sql语句,需要配置抓取策略为懒加载。
2.适用情况
适用于一对多的方式一,通过多条sql查询情况。
3.抓取策略fetchType(映射文件collection集合映射标签内属性)
懒加载(延迟加载):fetchType="lazy"。
及时加载 (默认):fetchType="eager"。
- 实例演示
以2.9 Mybatis——一对多集合映射——方式一的实例为例
GroupsMapper.xml配置抓取策略:
</select>
<resultMap id="groupsResult" type="com.zx.pojo.Groups">
<id column="gid" property="gid"></id>
<result column="gname" property="gname"></result>
<!--抓取策略
懒加载:fetchType="lazy"
及时加载:fetchType="eager"
-->
<collection fetchType="lazy" column="gid" property="users" select="com.zx.dao.UserDao.getUserByGid" ofType="com.zx.pojo.User"></collection>
</resultMap>
</mapper>
运行测试:
@Test
public void getGroupByGidTest(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
GroupsDao groupsDao = sqlSession.getMapper(GroupsDao.class);
Groups group = groupsDao.getGroupByGid(2);
//查询分组的名称和id
System.out.println(group.getGname()+"----"+group.getGid());
}
配置懒加载结果:
未配置或配置为及时加载结果: