映射文件中的四大核心 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. 核心价值:标准化、简化数据库操作,支撑复杂业务扩展
相关推荐
Anastasiozzzz18 小时前
深入研究RAG: 在线阶段-查询&问答
数据库·人工智能·ai·embedding
卤炖阑尾炎21 小时前
基于 MySQL 主主复制 + HAProxy+Keepalived 构建高可用集群实战
数据库·mysql
Dxy12393102161 天前
MySQL 如何高效删除大量数据:策略与最佳实践
数据库·mysql·oracle
倔强的石头_1 天前
从 “不得不存” 到 “战略必争”:工业数据的价值觉醒之路
数据库
倔强的石头_1 天前
新型电力系统应该用什么数据库?——时序数据库选型与落地实战
数据库
南汐以墨1 天前
一个另类的数据库-Redis
数据库·redis·缓存
RInk7oBjo1 天前
spring-事务管理
数据库·sql·spring
希望永不加班1 天前
SpringBoot 数据库连接池配置(HikariCP)最佳实践
java·数据库·spring boot·后端·spring
黑牛儿1 天前
MySQL 索引实战详解:从创建到优化,彻底解决查询慢问题
服务器·数据库·后端·mysql
捧月华如1 天前
RAG 入门-向量存储与企业级向量数据库 milvus
数据库·milvus