SQL 映射文件基础专题测试
考察知识点
- mapper 根元素与 namespace 属性绑定
- select 查询标签及常用属性(id、resultType、resultMap、parameterType、fetchSize)
- insert 插入标签及主键生成(useGeneratedKeys、keyProperty、selectKey)
- update 更新标签及缓存属性(flushCache、timeout)
- delete 删除标签与逻辑删除实现
- 动态 SQL 基础(set + if 组合实现按需更新)
💡 参考答案在文末
判断题
1
在 MyBatis 中,delete 标签只能用于执行物理删除(DELETE 语句),不能用于实现逻辑删除。
单选题
2
在 MyBatis 的 SQL 映射文件中,mapper 根元素的 namespace 属性的作用是什么?
3
在 MyBatis 的映射文件中,以下哪个标签用于定义查询 SQL 语句?
4
在 MyBatis 中执行插入操作并希望获取数据库自动生成的主键值,应该在 insert 标签中配置哪个属性?
5
在 MyBatis 映射文件中,用于定义 UPDATE 更新语句的标签是?
多选题
6
MyBatis 的 <select> 标签支持多种属性配置,以下哪些是 select 标签的有效属性?
7
关于 MyBatis 中 <insert> 标签的属性,以下说法正确的有哪些?
8
关于 MyBatis 中 <update> 标签的属性,以下说法正确的有哪些?
填空题
9
请填写以下 MyBatis delete 标签中的属性名称:
XML
<delete
____________="deleteUser"
____________="com.example.User"
flushCache="true"
timeout="30">
DELETE FROM users WHERE id = #{id}
</delete>
10
请填写以下 MyBatis mapper 映射文件中的空白部分:
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<____________ ____________="com.example.mapper.UserMapper">
<select id="findById" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
简答题
11
在 MyBatis 中,某些数据库(如 Oracle)不支持自动生成主键。请说明如何使用 <selectKey> 标签在 <insert> 语句中实现主键生成,并写出一个完整的示例(假设使用 Oracle 的序列 user_seq)。
12
在 MyBatis 映射文件中,如何使用 <set> 和 <if> 标签组合实现动态更新?假设有一个 User 实体类包含 id、name、email、age 四个属性,请编写一个 update 语句,要求只更新传入的非空字段,未传入的字段保持原值不变。同时说明与直接写全字段更新相比的优势。
参考答案
1.错误
2.B
3.C
4.B
5.C
6.A;B;C;D;E
7.A;B;C;E
8.A;C;D;E
9.id;parameterType
10.mapper;namespace
11.略
12.略
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码