MyBatis标签详解(最新整理)

 更新时间:2026年09月09日 10:01:44   作者:等等  
MyBatis的真正强大在于它的语句映射,这是它的魔力所在,使映射器的 XML文件显得相对简单,本文给大家介绍MyBatis标签详解,感兴趣的朋友一起看看吧

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储 过程以及高级映射。MyBatis 的真正强大在于它的语句映射,这是它的魔力所在,使映射器的 XML 文件显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。

继springBoot整合myBatis完整前后端项目实例后,本文详细介绍下mybatis常用标签。

常用属性

属性描述
id在命名空间中唯一的标识符,被用来引用这条语句
parameterType传入这条语句的参数的类全限定名或别名
resultType期望从这条语句中返回结果的类全限定名或别名,resultType 和 resultMap 之间只能同时使用一个
resultMap在命名空间中唯一的标识符,被用来引用这条语句 ,resultType 和 resultMap 之间只能同时使用一个
flushCache将其设置为 true 后,只要语句被调用,都会导致本地缓存和二级缓存被清空,默认值:对于(select语句)false ;对于( insert、update 和 delete 语句)true
useCache将其设置为 true 后,将会导致本条语句的结果被二级缓存缓存起来,默认值:对于(select语句)为 true
useGeneratedKeys(仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false
keyProperty(仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset)

MyBatis 标签主要分为‌基础 SQL 标签‌、‌结果映射标签‌和‌动态 SQL 标签‌三大类,核心作用是将 SQL 语句与 Java 对象进行映射,并支持动态拼接 SQL 条件 。‌‌‌

基础 SQL 标签怎么用

这类标签直接对应数据库的增删改查操作,每个标签都需要配置唯一的 id 属性来标识该语句 。‌‌‌

  • select 标签‌:用于查询数据库记录,必须指定 id,可选配置 parameterType 传入参数类型,resultType 或 resultMap 指定返回结果类型 。
    • resultType:适用于简单映射,如基本类型、HashMap 或 JavaBean。
    • resultMap:适用于复杂映射,需预先定义映射规则。
    • 常用属性还包括 flushCache(是否清空缓存)、useCache(是否使用二级缓存)、timeout(超时时间)等 。‌‌‌
  • insert 标签‌:用于插入数据,支持 useGeneratedKeys="true" 和 keyProperty 配合获取数据库自动生成的主键 。‌‌‌
  • update 标签‌:用于更新数据,通常配合动态 SQL 标签实现部分字段更新 。‌‌‌
  • delete 标签‌:用于删除数据,属性配置与 insert 类似 。‌‌‌
  • sql 标签‌:用于定义可复用的 SQL 片段,通过 <include refid="片段id"/> 在其他语句中引用 。‌‌‌

结果映射怎么配

当数据库列名与 Java 对象属性名不一致,或需要处理关联关系时,使用 resultMap 标签进行自定义映射 。‌‌‌

  • 基本映射‌:
    • <id property="id" column="id"/>:映射主键字段。
    • <result property="name" column="NAME"/>:映射普通字段,解决大小写或命名不一致问题 。‌‌‌
  • 关联关系映射‌:
    • <association property="user" javaType="User" select="selectUserById" column="user_id"/>:实现一对一关联,可配合另一个查询封装结果 。
    • <collection property="orders" ofType="Order" select="selectOrdersByUserId" column="user_id"/>:实现一对多关联,ofType 指定集合中元素的类型 。‌‌‌
  • 继承关系‌:可通过 extends 属性继承其他 resultMap,避免重复配置 。‌‌‌

动态 SQL 标签有哪些

动态 SQL 是 MyBatis 的核心优势,可根据参数条件动态拼接 SQL 语句,避免手动拼接导致的语法错误 。‌‌‌

  • if 标签‌:最常用的条件判断标签,根据 test 属性中的表达式决定是否包含内部 SQL 片段 。
    • 语法:<if test="条件表达式">SQL 片段</if>
    • 注意:test 中访问的是传入对象的属性,如 gender != null,不是数据库字段 。‌‌‌
  • choose/when/otherwise 标签‌:类似 Java 的 switch-case 语句,按顺序判断 when 条件,第一个成立则结束,都不成立则执行 otherwise 。
    • 语法:<choose><when test="...">...</when><otherwise>...</otherwise></choose>
  • where 标签‌:智能处理 where 子句,只在内部子元素有内容时才插入 where 关键字,并自动去除开头的 AND 或 OR 。
    • 作用:避免出现"WHERE AND"的错误 SQL。
    • 注意:不要在 where 标签内使用注释,否则可能导致语法错误 。‌‌‌
  • set 标签‌:用于 update 语句中生成 set 子句,自动剔除末尾多余的逗号 。
    • 作用:配合 if 标签实现动态更新部分字段,某字段为 null 时不更新 。‌‌‌
  • foreach 标签‌:用于构建 in 条件,对集合进行迭代,常用于批量删除、批量添加等操作 。
    • 关键属性:collection(迭代的集合,如 list/array/map)、item(当前元素别名)、index(当前下标)、open/close/separator(前后缀和分隔符)。‌‌‌
  • trim 标签‌:更灵活的格式化标签,可自定义 prefix、suffix、prefixOverrides、suffixOverrides,where 和 set 标签底层都基于 trim 实现 。‌‌‌
  • bind 标签‌:用于在配置中定义变量绑定,可简化复杂的 SQL 语句,如模糊查询时避免多次字符串拼接 。‌‌‌

到此这篇关于MyBatis标签详解(最新整理)的文章就介绍到这了,更多相关mybatis标签详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SkyWalking 自定义插件(Spring RabbitMQ)具体分析过程

    SkyWalking 自定义插件(Spring RabbitMQ)具体分析过程

    这篇文章主要介绍了SkyWalking 自定义插件(Spring RabbitMQ)具体分析过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java中随机数生成常见的几种方式及适用场景

    Java中随机数生成常见的几种方式及适用场景

    在Java中生成随机数的场景有很多,这篇文章主要给大家介绍了关于Java中随机数生成常见的几种方式及适用场景,包括基础(Random/Math.random)、加密安全(SecureRandom)、位数控制及第三方库,需要的朋友可以参考下
    2025-05-05
  • Spring中@Configuration注解和@Component注解的区别详解

    Spring中@Configuration注解和@Component注解的区别详解

    这篇文章主要介绍了Spring中@Configuration注解和@Component注解的区别详解,@Configuration 和 @Component 到底有何区别呢?我先通过如下一个案例,在不分析源码的情况下,小伙伴们先来直观感受一下这两个之间的区别,需要的朋友可以参考下
    2023-09-09
  • 使用Lombok的@Builder注解带来的两大坑

    使用Lombok的@Builder注解带来的两大坑

    这篇文章主要介绍了使用Lombok的@Builder注解带来的两大坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • SpringCloud Ribbon负载均衡工具使用

    SpringCloud Ribbon负载均衡工具使用

    Ribbon是Netflix的组件之一,负责注册中心的负载均衡,有助于控制HTTP和TCP客户端行为。Spring Cloud Netflix Ribbon一般配合Ribbon进行使用,利用在Eureka中读取的服务信息,在调用服务节点时合理进行负载
    2023-02-02
  • Java实现图片验证码具体代码

    Java实现图片验证码具体代码

    这篇文章主要为大家详细介绍了Java实现图片验证码具体代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 详解Maven optional关键字透彻图解

    详解Maven optional关键字透彻图解

    这篇文章主要介绍了详解Maven optional关键字透彻图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 深入讲解Java的对象头与对象组成

    深入讲解Java的对象头与对象组成

    由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能,这些标记字段组成了对象头,下面这篇文章主要给大家介绍了关于Java对象头与对象组成的相关资料,需要的朋友可以参考下
    2022-02-02
  • Java Ribbon与openfeign区别和用法讲解

    Java Ribbon与openfeign区别和用法讲解

    Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具,主要功能是提供客户端的软件负载均衡算法和服务调用。openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便
    2022-08-08
  • Java调用高德地图API根据详细地址获取经纬度详细教程

    Java调用高德地图API根据详细地址获取经纬度详细教程

    写了一个经纬度相关的工具,分享给有需求的小伙伴们,下面这篇文章主要给大家介绍了关于Java调用高德地图API根据详细地址获取经纬度,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04

最新评论