高级结果映射专题测试
考察知识点
- 一对一关联映射(
<association>元素,嵌套查询 vs 嵌套结果映射) - 一对多集合映射(
<collection>元素,ofType属性,集合初始化) - 多对多关联查询(中间表设计,多层级集合嵌套,
columnPrefix) <discriminator>鉴别器(动态结果映射,多态数据映射)- 嵌套查询与 N+1 问题(N+1 问题本质,解决方案)
- 延迟加载配置(
lazyLoadingEnabled、lazyLoadTrigger、fetchType)
在 MyBatis 中,<discriminator> 元素用于根据查询结果中某列的值动态决定使用哪个 <resultMap>。以下关于 <discriminator> 的描述,哪一项是错误的?
在 MyBatis 中实现一对一关联映射时,以下哪种方式不适合用于关联查询?
在 MyBatis 中实现一对多集合映射时,以下哪些说法是正确的?
在 MyBatis 中实现多对多关联查询(如:用户-角色,通过用户角色关联表),请描述:
- 数据库表结构应该如何设计?
- 使用嵌套结果映射时,SQL 语句应如何编写?
- 如何在 resultMap 中配置多层级的集合嵌套?
在 MyBatis 中使用嵌套查询(select 属性)进行关联查询时,如果查询 10 个用户,每个用户关联 1 个部门,则总共会执行 11 次 SQL 查询。这种说法是否正确?
在 MyBatis 的全局配置中,启用延迟加载需要设置两个关键参数:
- 开启延迟加载的开关:!!1_!!
- 配置按需加载(即访问任意属性都触发延迟加载):!!2_!!
关于 MyBatis 中 <discriminator> 鉴别器的使用,以下哪些说法是正确的?
MyBatis 中一对一关联映射的两种主要方式:
- 嵌套查询:通过 !!1_!! 属性引用另一个 select 语句进行关联查询
- 嵌套结果映射:通过 !!2_!! 属性引用另一个 resultMap 进行 JOIN 结果映射
在 MyBatis 中实现一对多集合映射时,使用嵌套查询和嵌套结果映射各有什么优缺点?在什么场景下应该选择哪种方案?
以下哪种方式不能有效解决 MyBatis 中的 N+1 查询问题?
关于 MyBatis 延迟加载的配置和行为,以下哪些说法是正确的?
在 MyBatis 中实现多对多关联查询时,必须通过中间表(关联表)将多对多关系拆分为两个一对多关系,这种说法是否正确?
MyBatis 中的 <discriminator> 鉴别器与 Java 中的 switch-case 语句有相似之处。请回答:
<discriminator>的主要作用是什么?- 在实际项目中,什么业务场景适合使用鉴别器?
- 当
<case>没有匹配时,映射行为是怎样的?
在实际项目中,以下哪些策略可以有效缓解或解决 MyBatis 的 N+1 查询问题?
在电商系统中,用户(User)和用户详情(UserProfile)是一对一关系。请设计 MyBatis 的映射方案,并说明:
- 数据库表结构如何设计?
- 如何使用嵌套结果映射实现 JOIN 查询?
- 如果需要分别查询用户和用户详情,应如何设计 Mapper?
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验