全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页

注解开发专题测试

9 题 45 分钟 难度:

考察知识点

  • @Select@Insert@Update@Delete 等基础 CRUD 注解
  • @Results@Result@ResultMap 结果映射配置
  • @One@Many 一对一与一对多关联映射
  • @SelectProvider@InsertProvider 等动态 SQL Provider 注解
  • @Param 参数绑定与多参数传递
  • @Options 主键回填与选项配置
  • 注解与 XML 混合使用的场景与最佳实践
  • 注解开发中的缓存配置(@CacheNamespace
1
多选题

关于 MyBatis 注解开发中 @One 和 @Many 的使用,以下说法正确的有?

A

@One 用于一对一关联查询,@Many 用于一对多关联查询,两者底层都是通过嵌套查询实现的

B

@One 和 @Many 注解的 select 属性用于指定执行嵌套查询的 Mapper 方法(全限定方法名)

C

fetchType 属性可设置为 FetchType.LAZY 实现延迟加载,设置为 FetchType.EAGER 实现立即加载

D

当使用 @Many 时,返回类型必须是 List,不能使用其他集合类型

2
填空题

在 MyBatis 注解开发中,@One 和 @Many 注解通过 _________ 属性控制加载策略(LAZY/EAGER)。当使用 ______ 属性传递多个参数给嵌套查询时,语法为 {property1=column1, property2=column2}。为避免 N+1 查询问题,推荐使用 JOIN SQL 配合嵌套 ________ 结果映射替代嵌套查询。

3
填空题

在 MyBatis 注解开发中,@One 和 @Many 注解通过 ______ 属性指定嵌套查询的 Mapper 方法。如果需要通过 column 属性传递多个参数给嵌套查询,可以使用 ____________ 区分同名字段,或使用 {________________________} 语法传递多列参数。

4
单选题

关于 @SelectProvider 注解的使用,以下哪个说法是错误的?

A

@SelectProvider 注解的 type 属性指定一个类,该类包含返回 SQL 字符串的方法

B

@SelectProvider 注解的 method 属性指定 type 类中的方法名,该方法必须返回 String 类型的 SQL

C

@SelectProvider 对应的方法可以接收任意数量的参数,参数会与方法签名中的参数按顺序匹配

D

推荐使用 org.apache.ibatis.jdbc.SQL 工具类来拼接动态 SQL,以避免 SQL 注入和语法错误

5
多选题

关于 MyBatis 注解动态 SQL 的 Provider 注解族,以下说法正确的有?

A

@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider 分别用于提供动态 SQL 的查询、插入、更新、删除操作

B

Provider 方法只能返回一条完整的 SQL 字符串,不能根据条件动态拼接不同的 SQL 片段

C

在 Provider 方法中可以使用 org.apache.ibatis.jdbc.SQL 类提供的 SELECT()、FROM()、WHERE() 等方法来构建动态 SQL

D

@SelectProvider 对应的方法参数可以是 Mapper 方法参数的 Map 映射,通过 @Param 注解的参数名作为 Map 的 key

6
填空题

在 MyBatis 中,使用 @SelectProvider 构建动态 SQL 时,推荐使用 ________________________ 工具类。该类支持链式调用,通过 ______ 指定查询列,______ 指定表名,______ 添加条件,最后通过 ________ 方法返回完整的 SQL 字符串。

7
多选题

关于 @Results 注解在 MyBatis 注解开发中的高级使用,以下说法正确的有?

A

@Results 的 id 属性可以给结果映射命名,其他方法通过 @ResultMap 注解引用该 id 实现复用

B

@Result 注解的 column 属性必须与数据库列名完全一致才能正确映射

C

当 Java 属性名与数据库列名一致时,可以不配置 @Results,MyBatis 会自动映射

D

@Result 中可以嵌套 @One 或 @Many 实现关联查询,也可以嵌套 @Results 实现 JOIN 查询的嵌套结果映射

8
多选题

关于 MyBatis 中 @Select、@Insert、@Update、@Delete 四个基础注解的使用,以下说法正确的有?

A

这四个注解可以直接标注在 Mapper 接口的方法上,替代 XML 中的对应 SQL 标签

B

@Insert 注解支持 useGeneratedKeys 和 keyProperty 属性,用于获取自增主键值

C

@Update 和 @Delete 注解可以返回 int 类型,表示受影响的行数

D

注解方式的 SQL 中可以使用 <if>、<foreach> 等 XML 动态 SQL 标签

9
多选题

在 MyBatis 注解开发中,关于 @Results、@One、@Many 的组合使用,以下说法正确的有?

A

可以在 @Results 中同时配置 @One 和 @Many,分别处理一对一和一对多关联

B

@One 和 @Many 的 column 属性可以引用主查询返回的多个列,用于嵌套查询的参数传递

C

嵌套的 @Results 可以在 @One 或 @Many 内部再次定义结果映射,适用于 JOIN 查询的场景

D

使用 @Results + @One/@Many 实现嵌套关联时,所有的关联查询都必须在同一条 SQL 语句中完成

← 上一个试卷 核心配置文件专题测试
下一个试卷 → 源码架构与核心原理专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库