映射文件中的四大核心 CRUD 操作标签(对应数据库的增、删、改、查操作)

实现数据库基本操作,也是映射文件的核心组成部分

一、 概述

MyBatis 为了实现数据库的 CRUD(Create:新增、Read:查询、Update:修改、Delete:删除)操作,在 XML 映射文件中提供了四个专用的核心标签 ,分别与数据库的四种基本操作一一对应,用于封装对应的 SQL 语句,实现 "Java 接口方法" 与 "数据库操作 SQL" 的绑定,这是 MyBatis 操作数据库的基础入口

这四个标签各司其职,均不能混用,MyBatis 会根据标签类型解析对应的 SQL 语句并执行对应的数据库操作,其中<select>是唯一有查询返回结果的标签,<insert><update><delete>均为数据修改类标签,仅返回受影响的数据库行数

二、 四大核心 CRUD 标签详细解析(本题考点 + 补充完整知识点)

<select>:查询(Read)操作标签

  • 核心作用 :专门用于封装数据库 SELECT 查询语句,负责从数据库中读取数据,不修改数据库中的任何数据(只读操作)

  • 核心特性

    • 唯一具备返回结果的 CRUD 标签,必须通过resultTyperesultMap配置返回结果类型,否则无法完成结果封装
    • 支持多参数传递、动态 SQL、分页查询等高级功能,适配简单查询到复杂关联查询的各类场景
    • 默认配置flushCache="false",执行后不会刷新缓存,会优先从缓存中获取数据(提升查询效率)
  • 核心使用场景:查询单条记录、查询多条记录、统计数据总数、多表关联查询等所有无需修改数据的场景

<insert>:新增(Create)操作标签

  • 核心作用 :专门用于封装数据库 INSERT 插入语句,负责向数据库表中新增一条或多条记录(数据新增操作)

  • 核心特性

    • 无查询返回结果,执行后仅返回受影响的行数(int 类型)
    • 支持特殊功能:可通过useGeneratedKeys(是否获取自增主键)、keyProperty(将自增主键赋值到实体类的某个属性)配置,获取插入数据后的自增主键(如 MySQL 表的自增 ID),这是开发中的常用需求
    • 默认配置flushCache="true",执行后会刷新 MyBatis 的一级缓存和二级缓存,避免缓存数据与数据库实际数据不一致
  • 核心使用场景:向单表插入一条记录、批量插入多条记录(可配合动态 SQL 实现)等数据新增场景

<update>:修改(Update)操作标签

  • 核心作用 :专门用于封装数据库 UPDATE 更新语句,负责修改数据库表中已存在的记录

  • 核心特性

    • 数据修改类标签,仅返回受影响的行数,无需配置结果类型
    • 默认flushCache="true",执行后刷新缓存
    • 支持动态 SQL,可实现 "按需更新"(仅修改传入非空的字段),提升开发灵活性
  • 核心使用场景:更新单条记录的部分字段、批量更新多条记录等数据修改场景

4. <delete>:删除(Delete)操作标签

  • 核心作用

    • 专门用于封装数据库 DELETE 删除语句,负责删除数据库表中的记录
  • 核心特性

    • 数据修改类标签,仅返回受影响的行数,无需配置结果类型
    • 默认flushCache="true",执行后刷新缓存
    • 支持单条记录删除、批量记录删除(配合动态 SQL),需谨慎使用(避免无条件删除全表数据)
  • 核心使用场景:删除单条记录、批量删除符合条件的记录、逻辑删除(更新状态字段,非物理删除)等场景

三、核心规则

  1. 标签与 SQL 语句一一对应 :每个标签内只能编写对应类型的 SQL 语句(如<select>内只能写 SELECT 语句),不可混用,否则 MyBatis 解析时会抛出异常
  2. 必须配置id属性 :所有 CRUD 标签的id属性必须与对应的 Mapper 接口方法名完全一致,这是实现接口与 SQL 绑定的核心条件
  3. 支持可选的parameterType属性:用于指定传入参数的类型,MyBatis 3.4 + 可自动推断,无需手动配置,适配基本数据类型、实体类、Map 等多种参数类型
  4. 语法遵循 XML 标准 :标签必须正确闭合、属性值必须用引号包裹,SQL 语句中的特殊字符(如<>)需做转义或包裹在<![CDATA[ ]]>

四、核心价值

  1. 标准化数据库操作:将数据库的四种基本操作封装为专用标签,规范了 SQL 的编写和管理,提升了代码的可读性和可维护性
  2. 简化数据操作开发:无需手动编写 JDBC 的PreparedStatementResultSet等冗余代码,通过标签配置即可实现数据库操作,降低开发门槛
  3. 支撑高级功能扩展:四大标签均支持 MyBatis 的动态 SQL、缓存、结果映射等高级功能,为复杂业务场景提供了支撑

总结

  1. 核心知识点:MyBatis 映射文件四大核心 CRUD 操作标签(<select><insert><update><delete>
  2. 本题考点:<select>(查询)、<insert>(新增)的核心作用
  3. 关键规则:标签与 SQL 一一对应、id对应接口方法名、数据修改类标签默认刷新缓存
  4. 核心价值:标准化、简化数据库操作,支撑复杂业务扩展
相关推荐
IvorySQL2 小时前
PostgreSQL 技术日报 (3 月 12 日)|为什么加索引反而变慢?这招让查询快 50 倍
数据库·postgresql·开源
y = xⁿ2 小时前
【从零开始学习Redis|第五篇】Redis 常见数据类型和应用场景
数据库·redis·学习·缓存
DolphinDB智臾科技2 小时前
DolphinDB:技术赋能钢铁业,国产时序数据库领路数智化落地
数据库·物联网·时序数据库·dolphindb
熬夜有啥好2 小时前
Linux软件编程——数据库——自制小词典
数据库·linux软件编程·自制词典
青桔柠薯片2 小时前
数据库编程:从SQLite基础到C语言集成
linux·数据库·学习·sqlite
技术净胜2 小时前
MySQL 主从复制(日志核心)完整教程
数据库·mysql·adb
夏光芒3 小时前
SQLSERVER数据库常用语句
数据库·sqlserver
乾元3 小时前
RAG 架构: 利用向量数据库构建企业的安全知识库
运维·网络·数据库·人工智能·安全·网络安全·架构
happymaker06263 小时前
MySQL基础定期复盘
数据库·mysql