映射文件中的四大核心 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. 核心价值:标准化、简化数据库操作,支撑复杂业务扩展
相关推荐
这儿有一堆花3 分钟前
住宅代理(Residential Proxy)技术指南
开发语言·数据库·php
茉莉玫瑰花茶34 分钟前
LangChain 核心组件 [ 2 ]
java·数据库·langchain
存在的五月雨1 小时前
Mysql 索引的一些
数据库·mysql
黄俊懿2 小时前
MySQL主从复制:从“异步“到“GTID“,数据同步的进化之路
数据库·sql·mysql·oracle·架构·dba·db
看海的四叔2 小时前
【SQL】SQL-管好你的字符串
大数据·数据库·hive·sql·数据分析·字符串
秋92 小时前
TiDB 数据库全链路实战指南:从下载部署到 Java 高并发调优
java·数据库·tidb
zhou周大哥3 小时前
银河麒麟安装mysql
数据库·mysql
无敌的黑星星3 小时前
Spring @Transactional 注解全解析
java·数据库·oracle
Rust研习社3 小时前
Rust + PostgreSQL 极简技术栈应用开发
开发语言·数据库·后端·http·postgresql·rust
河阿里3 小时前
MyBatis-Plus:MyBatis的进阶开发
数据库·mybatis