全部学科
Python全栈
python
NodeJS全栈
nodejs

基本 CRUD 实战专题测试

8 题 40 分钟 难度:★

考察知识点

  • MyBatis 增删改查基本语法(insert、update、delete、select)
  • SQL 映射文件(Mapper XML)的配置与使用
  • 参数传递方式(单参数、多参数、对象参数、@Param 注解)
  • 结果集映射(resultType、resultMap)
  • 主键回填与自增主键处理
  • 动态 SQL 基础(if、where 标签)
💡 参考答案在文末
判断题
1

在 MyBatis 中,使用 selectOne() 方法查询数据库时,如果 SQL 语句返回了多条记录,MyBatis 会抛出 TooManyResultsException 异常。

A

B

单选题
2

在 MyBatis 的 Mapper XML 文件中,<select> 标签用于定义查询语句。以下关于 <select> 标签常用属性的描述,哪一项是错误的?

A

id 属性用于唯一标识该语句,必须与 Mapper 接口中的方法名一致

B

resultType 属性指定查询结果的全限定类名或别名,适用于列名与属性名一致的场景

C

resultMap 属性引用外部 <resultMap> 定义,适用于列名与属性名不一致或需要复杂映射的场景

D

parameterType 属性是必填项,不指定会导致 MyBatis 无法解析 SQL

多选题
3

在 MyBatis 中实现批量插入数据,以下哪些方式是可行的?

A

使用 <foreach> 标签在 XML 中拼接多条 INSERT 语句,一次性执行

B

在 Java 代码中使用 SqlSession 循环调用 insert() 方法

C

使用 MyBatis 的 BatchExecutor 执行器模式

D

<insert> 标签中直接编写多条 INSERT INTO ... VALUES (...); 语句,用分号分隔

4

在 MyBatis 中实现条件更新(UPDATE)时,以下关于动态 SQL 的使用描述,哪些是正确的?

A

使用 <set> 标签可以自动去除最后一个字段赋值后的逗号

B

使用 <if> 标签包裹每个字段的赋值语句,可以实现只更新非空字段

C

<set> 标签内部不能嵌套 <if> 标签

D

使用 <trim> 标签设置 prefix="SET" suffixOverrides="," 可以实现与 <set> 标签相同的效果

5

关于 MyBatis 中 SqlSession 的事务控制,以下哪些描述是正确的?

A

默认情况下,SqlSession 的事务是自动提交的

B

调用 sqlSession.commit() 方法可以提交当前事务

C

调用 sqlSession.rollback() 方法可以回滚当前事务

D

在创建 SqlSession 时可以指定 autoCommit 参数开启自动提交

简答题
6

请使用 MyBatis 的 <foreach> 标签编写一个批量插入用户的 Mapper XML 语句。假设用户表 t_user 包含字段 id(自增主键)、nameemailage,传入参数为 List<User> 类型的 users。请写出完整的 <insert> 语句。

7

请编写一个 MyBatis Mapper XML 中的条件删除语句。要求:根据传入的参数 idnameage 进行条件删除,如果参数为 null 则不作为删除条件。请使用动态 SQL 标签实现。

8

请编写一段 Java 代码,使用 MyBatis 的 SqlSession 实现以下功能:先插入一条用户记录,再更新该用户的邮箱,如果任何一步失败则回滚整个事务。要求展示完整的事务控制流程。

参考答案
1.正确 2.D 3.A;B;C 4.A;B;D 5.B;C;D 6. 7. 8.
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 参数传递与结果映射专题测试
下一套试卷 → 多租户与数据权限专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码