全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📝 1 篇文章 12 道配套习题

SQL 映射文件基础专题

专题说明

本专题讲解 MyBatis 中最重要的组成部分——SQL 映射文件。掌握映射文件的结构和四种 SQL 语句标签的使用,是使用 MyBatis 的基础技能。

学习目标

  1. 理解 mapper 根元素及其 namespace 属性的作用
  2. 掌握 select、insert、update、delete 四种语句标签的使用
  3. 理解各语句标签的核心属性(id、parameterType、resultType 等)
  4. 能够编写基本的增删改查 SQL 映射
  5. 了解动态 SQL 中 <set><if> 标签的组合使用

学习内容

本专题涵盖以下知识点:

  • mapper 根元素结构与 namespace 绑定机制
  • <select> 查询语句:属性与返回值映射
  • <insert> 插入语句:主键回填机制
  • <update> 更新语句:动态更新实现
  • <delete> 删除语句:条件删除
  • 动态 SQL 基础:<set><if> 标签

学习建议

  1. namespace 是理解 MyBatis 接口绑定的关键,务必重点理解
  2. 四种语句标签结构相似,先掌握 select,再类推其他
  3. 动态 SQL 是进阶内容,本专题只介绍最基础的 <set> + <if> 组合

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

📝 配套习题(12 题)

1
单选题

在 MyBatis 的 SQL 映射文件中,mapper 根元素的 namespace 属性的作用是什么?

A

指定数据库的名称

B

绑定对应的 Mapper 接口的全限定类名,用于定位 SQL 语句

C

配置数据库连接池

D

设置日志输出级别

2
单选题

在 MyBatis 的映射文件中,以下哪个标签用于定义查询 SQL 语句?

A

query

B

find

C

select

D

search

3
单选题

在 MyBatis 中执行插入操作并希望获取数据库自动生成的主键值,应该在 insert 标签中配置哪个属性?

A

autoKey="true"

B

useGeneratedKeys="true"

C

getKey="true"

D

returnKey="true"

4
单选题

在 MyBatis 映射文件中,用于定义 UPDATE 更新语句的标签是?

A

modify

B

change

C

update

D

edit

5
判断题

在 MyBatis 中,delete 标签只能用于执行物理删除(DELETE 语句),不能用于实现逻辑删除。

A

B

6
多选题

MyBatis 的 <select> 标签支持多种属性配置,以下哪些是 select 标签的有效属性?

A

id — 唯一标识该查询语句

B

resultType — 指定返回结果的全限定类名

C

resultMap — 引用外部定义的 resultMap 来处理复杂映射

D

parameterType — 指定传入参数的全限定类名

E

fetchSize — 每次从数据库获取的记录数

7
多选题

关于 MyBatis 中 <insert> 标签的属性,以下说法正确的有哪些?

A

useGeneratedKeys="true" 可以让 MyBatis 使用数据库自动生成的主键

B

keyProperty 用于指定将主键值设置到 Java 对象的哪个属性

C

keyColumn 用于指定数据库表中主键列的名称

D

parameterType 必须指定,不能省略

E

flushCache 默认为 true,表示插入后清空缓存

8
多选题

关于 MyBatis 中 <update> 标签的属性,以下说法正确的有哪些?

A

flushCache 默认为 true,表示更新后清空缓存

B

useCache 属性对 update 标签有效,用于控制是否缓存

C

timeout 属性用于设置 SQL 执行的超时时间(秒)

D

statementType 可以设置为 STATEMENT、PREPARED 或 CALLABLE

E

update 标签的返回值默认为受影响的行数

9
填空题

请填写以下 MyBatis delete 标签中的属性名称:

XML
<delete 
  !!1_!!="deleteUser" 
  !!2_!!="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">

<______2_!!="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 语句,要求只更新传入的非空字段,未传入的字段保持原值不变。同时说明与直接写全字段更新相比的优势。

← 上一个专题 MyBatis 概述与环境搭建专题
下一个专题 → TypeHandler 自定义类型处理器专题

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

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

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

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