映射文件中的四大核心 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. 核心价值:标准化、简化数据库操作,支撑复杂业务扩展
相关推荐
老纪的技术唠嗑局1 小时前
超级干货分享:中小企业使用 OceanBase 实践经验汇总
数据库
CLOUD ACE1 小时前
谷歌云代理|零售商Target 如何利用 Spanner Graph 提升零售发现体验并将数据库维护成本降低 50%
数据库·零售
AI大模型-小雄1 小时前
Codex写分页接口为什么越翻越慢?用Cursor Pagination解决重复与漏数据
大数据·数据库·elasticsearch·搜索引擎·chatgpt·后端开发·codex
少晓年2 小时前
从 MySQL 迁移到人大金仓 KingbaseES:完整指南与实践
数据库·mysql
SelectDB2 小时前
Apache Doris AI RAG 实战:从基础 RAG 到知识图谱增强的技术能力与选型
数据库
SelectDB3 小时前
电商企业 PostgreSQL 迁移 Apache Doris:80TB 分析数据统一平台技术能力与实践
数据库
SelectDB3 小时前
阶跃星辰 Agent 可观测:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB3 小时前
ApacheDoris Iceberg V3 湖仓 DML:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB3 小时前
ApacheDoris Python UDF:SQL 调用 Python 的技术能力、选型对比与实践
数据库
Crazy________3 小时前
Redis03:持久化存储,大key分析,主从复制及哨兵模式
数据库·redis·容器