MyBatis的分步查询

您所在的位置:网站首页 mybatis分步查询缺点 MyBatis的分步查询

MyBatis的分步查询

2023-12-20 22:40| 来源: 网络整理| 查看: 265

// 分步查询的优点:     可以实现延迟加载,但是必须在核心配置文件中设置全局配置信息: lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载 aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。 否则,每个属性会按需加载 此时就可以实现按需加载,获取的数据是什么,就只会执行相应的sql。此时可通过association和collection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType="lazy(延迟加 载)|eager(立即加载)"       

代码示例 //测试实体类 public class ClazzTest { private Integer id; //班级id private String clazzName;//班级名称 private List studentList;//班级学生信息 } @Test public void testCRUD() throws IOException { SqlSession sqlSession = getSqlSession(); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); //一对多查询,分布查询 //第一步:根据班级id查询班级信息 ClazzTest clazzById = mapper.getClazzById(1); //当只获取班级信息,则只执行第一步查询 System.out.println("班级信息:"+clazzById.getClazzName()); //当获取班级下的学生信息时,才进行第二步查询 List studentList = clazzById.getStudentList(); studentList.forEach(System.out::println); } /** * 分步查询第一步,根据id查询班级信息 * * @param id 班级id */ ClazzTest getClazzById(@Param("id") Integer id); SELECT * FROM demo1.clazz c WHERE id = #{id} /** * 分步查询第二步,根据班级id查询班级的学生 * * @param clazzId 班级id */ List getStudentByClazzId(@Param("clazzId") Integer clazzId); SELECT * FROM demo1.student WHERE clazzId = #{clazzId} 运行结果 [12:49:23.028] [DEBUG] [main] [com.xyz.mybatis.mapper.StudentMapper.getClazzById] [==> Preparing: SELECT * FROM demo1.clazz c WHERE id = ?] [12:49:23.063] [DEBUG] [main] [com.xyz.mybatis.mapper.StudentMapper.getClazzById] [==> Parameters: 1(Integer)] [12:49:23.159] [DEBUG] [main] [com.xyz.mybatis.mapper.StudentMapper.getClazzById] [ Preparing: SELECT * FROM demo1.student WHERE clazzId = ?] [12:49:23.161] [DEBUG] [main] [com.xyz.mybatis.mapper.StudentMapper.getStudentByClazzId] [==> Parameters: 1(Integer)] [12:49:23.164] [DEBUG] [main] [com.xyz.mybatis.mapper.StudentMapper.getStudentByClazzId] [


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3