MyBatis之一对多抓取策略

MyBatis之一对多抓取策略

1.情况描述

如果只需要使用一方中的数据,而不使用多方数据的情况下,在执行过程中不需要发送查询多方的sql语句,需要配置抓取策略为懒加载。

2.适用情况

适用于一对多的方式一,通过多条sql查询情况。

3.抓取策略fetchType(映射文件collection集合映射标签内属性)

懒加载(延迟加载):fetchType="lazy"。
及时加载 (默认):fetchType="eager"。
  1. 实例演示
    以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());
    }

配置懒加载结果:

未配置或配置为及时加载结果:

posted @ 2023-06-04 14:32  戒爱学Java  阅读(15)  评论(0编辑  收藏  举报