mybatis中的动态sql标签

MyBatis 中动态 SQL 标签 在 MyBatis 中,动态 SQL 是构建灵活且高效的 SQL 语句的重要工具。通过使用动态 SQL 标签,开发者可以根据不同的条件动态生成 SQL 语句的各个部分,从而避免手动拼接字符串带来的复杂性和潜在的错误。 阅读详情

MyBatis 中的动态 SQL 标签提供了一种强大的方式来根据不同的条件动态生成 SQL 语句,增强了 SQL 语句的灵活性和可维护性。以下是一些主要的动态 SQL 标签的讲解:

<if>标签:

  • 用途:用于进行条件判断。如果满足指定的条件,就会将<if>标签内部的 SQL 片段添加到最终生成的 SQL 语句中。
  • 语法:<if test="条件表达式">SQL 片段</if>。
  • 示例:
    <select id="selectUsers" resultType="User">
        SELECT * FROM users
        <if test="username!= null">
            WHERE username = #{username}
        </if>
    </select>

    在这个例子中,如果传入的参数username不为null,那么就会在生成的 SQL 语句中添加WHERE username = #{username}这个条件。

<choose>、<when>、<otherwise>标签组合:

  • 用途:类似于 Java 中的switch语句。可以根据不同的条件选择不同的 SQL 片段执行。
  • 语法:
    <select id="selectUsers" resultType="User">
        SELECT * FROM users
        <choose>
            <when test="condition1">SQL 片段 1</when>
            <when test="condition2">SQL 片段 2</when>
            <otherwise>默认 SQL 片段</otherwise>
        </choose>
    </select>

    示例:假设根据不同的角色来查询用户,若角色为 “admin” 则查询所有管理员用户,若角色为 “user” 则查询普通用户,否则查询所有用户。

    <select id="selectUsersByRole" resultType="User">
        SELECT * FROM users
        <choose>
            <when test="role == 'admin'">
                WHERE role = 'admin'
            </when>
            <when test="role == 'user'">
                WHERE role = 'user'
            </when>
            <otherwise>
                WHERE 1 = 1
            </otherwise>
        </choose>
    </select>

    <where>标签:

  • 用途:用于自动添加WHERE关键字,并处理条件中多余的AND或OR。如果<where>标签内部的条件都不满足,它会忽略整个WHERE子句。
  • 语法:<where>条件 SQL 片段</where>。
  • 示例:
    <select id="selectUsersWithConditions" resultType="User">
        SELECT * FROM users
        <where>
            <if test="username!= null">
                AND username = #{username}
            </if>
            <if test="age > 0">
                AND age = #{age}
            </if>
        </where>
    </select>

    在这个例子中,如果传入的参数既没有username也没有指定age,那么最终生成的 SQL 语句中不会包含WHERE子句。 

<set>标签:

  • 用途:用于动态地构建UPDATE语句中的SET子句。它会自动处理多余的逗号,并在条件不满足时忽略整个SET子句。
  • 语法:<set>设置 SQL 片段</set>。
  • 示例:
    <update id="updateUser" parameterType="User">
        UPDATE users
        <set>
            <if test="username!= null">
                username = #{username},
            </if>
            <if test="age > 0">
                age = #{age},
            </if>
        </set>
        WHERE id = #{id}
    </update>

    在这个例子中,如果传入的User对象的username或age属性为null,那么在生成的UPDATE语句中就不会包含对应的设置项。

<foreach>标签:

  • 用途:用于循环遍历集合,并根据集合中的元素动态生成 SQL 片段。通常用于构建IN条件或批量插入、更新等操作。
  • 语法:<foreach collection="集合参数" item="元素变量名" separator="分隔符" open="开头字符" close="结尾字符">SQL 片段</foreach>。
  • 示例:
    <select id="selectUsersByIds" resultType="User">
        SELECT * FROM users WHERE id IN
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </select>

    在这个例子中,如果传入一个包含多个用户 ID 的集合,<foreach>标签会动态生成一个IN条件的 SQL 片段。

<trim>标签:

  • 用途:可以自定义在 SQL 片段的开头和结尾添加或删除特定的字符。可以用于替代<where>和<set>标签在某些复杂场景下的使用。
  • 语法:<trim prefix="开头添加的字符" suffix="结尾添加的字符" prefixOverrides="开头删除的字符" suffixOverrides="结尾删除的字符">SQL 片段</trim>。
  • 示例:
    <select id="selectUsersWithTrim" resultType="User">
        SELECT * FROM users
        <trim prefix="WHERE" suffix="" prefixOverrides="AND |OR">
            <if test="username!= null">
                AND username = #{username}
            </if>
            <if test="age > 0">
                OR age = #{age}
            </if>
        </trim>
    </select>

    在这个例子中,<trim>标签会根据条件动态添加WHERE关键字,并处理开头多余的AND或OR。

这些动态 SQL 标签使得 MyBatis 在处理复杂的数据库查询和操作时更加灵活和强大,可以根据不同的条件动态生成合适的 SQL 语句,提高了代码的可维护性和可扩展性。 

 

 

 

MyBatis:动态SQL高级标签使用方法指南 本文介绍了Springboot项目中SQL映射方式、动态SQL和支持动态SQL的核心标签.MyBatis的动态SQL功能允许开发者根据不同条件灵活构建SQL语句,避免手动拼接字符串,另外,常用查询列和查询SQL还可以借助动态SQL实现复用,提高XML中SQL代码的可维护性和安全性。 阅读详情

相关推荐

MyBatis:动态 SQL 标签

MyBatis动态SQL标签介绍

啊Q老师 7629

Mybatis的常用的9种动态sql标签

一般会加载动态条件中配合使用, 在有条件的情况下它会自动在所有条件的前面加上。分割符设置(每次循环在结尾添加什么分隔符,会自动去除最后一个结尾的分隔符)参数对象中计算表达式的值,根据表达式的值动态拼接。它的功能比较灵活、广泛。关键字, 还会去掉所有条件前面的。范围查询 使用$可以实现但是有。每次循环使用的接收变量。前面加上去除指定的字符串。后面加上去除指定的字符串。需要循环的集合的参数名字。循环开始添加的字符串。循环结束添加的字符串。前面加上指定的字符串。后面加上指定的字符串。

林夕 8499

从零到一:用CubeMX和485模块快速上手多摩川绝对式编码器(附清零操作详解)

本文详细介绍了如何使用STM32CubeMX和485模块快速上手多摩川绝对式编码器,包括硬件连接、STM32配置、协议解析及清零操作。通过具体的代码示例和调试技巧,帮助开发者高效实现编码器数据读取和清零功能,特别适合STM32单片机开发者参考。

weixin_30599769的博客 192

MyBatis 中 9 种动态 SQL 标签

Mybatis动态sql可以让我们在Xml映射文件内,以标签的形式编写动态sql,完成逻辑判断和动态拼接sql的功能,Mybatis提供了9种动态sql标签 trim|where|set|foreach|if|choose|when|otherwise|bind。

我的博客 3310

利用ArcGIS创建渔网计算渔网内土地利用占比划分中国北方农牧交错带

依据土地利用数据,根据参考文献划分要求,利用ArcGIS创建渔网对地物进行重分类,划分农业带、牧业带以及农牧交错带。

m0_60672527的博客 3059

实战分享:如何用Jetson Nano+HM30图传搭建低空YOLOv5检测系统(附VNC避坑指南)

本文详细介绍了如何利用Jetson Nano和HM30图传搭建低空YOLOv5检测系统,重点解决了无人机应用中的硬件连接和VNC延迟优化问题。通过对比WiFi直连与图传方案的优劣,提供了网络配置、VNC优化及YOLOv5模型加速的实战技巧,帮助开发者实现高效稳定的低空目标检测系统。

weixin_29174385的博客 110

Mybatis常用标签与动态SQL详解

mybatis通用查询条件与返回值 1. mybatis查询常用标签 sql标签: if标签: trim标签: prefix=”where”//给第一符合条件的语句 加上前缀where prefixOverrides=”and” //将最后一条语句的 前缀and 覆盖 suffix=”and” //给第一符合条件的语句 加上后缀 and suffixOverrides=”and”//将最后一条语句的后缀 and 覆盖 test标签: include标签: refid标签: where标签 2.样例 <

asxyxxx的博客 2064

ArcGISPro应用指南:ArcGISPro制图全流程详解

本文介绍了基于ArcGIS Pro的地图制作基本流程,旨在帮助读者快速掌握从数据加载到地图输出的完整制图操作。文章首先简要概述了GIS技术在当今数据驱动时代的重要作用,并引出ArcGIS Pro作为专业GIS平台的优势与应用价值。随后,内容围绕地图制作的核心步骤展开,包括数据加载、布局创建、地图范围设置以及各类地图要素(如指北针、比例尺、图例、图名)的插入与样式调整。此外,还介绍了如何通过添加图形、文本及动态元素增强地图表达效果,并最终完成地图导出设置与文件输出格式的选择。

weixin_45812624的博客 1357

Mybatis常用动态sql标签、注意事项及使用案例总结

Mybatis常用动态sql标签、注意事项及使用案例总结

m0_67907445的博客 2853

零基础实战:用 Docker 和 vLLM 本地部署 BGE-M3 文本嵌入模型

BGE-M3是北京智源推出的多功能文本嵌入模型,支持跨语言语义匹配。利用Docker容器化和vLLM框架可高效部署该模型,实现本地运行的优势包括隐私保护、定制化和成本控制。通过配置Docker环境,使用vLLM官方镜像加载模型,并进行文本嵌入测试验证效果。该方案适合开发者快速验证模型能力,或集成到本地NLP流程中。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 4953

【Codex】Codex安装+DeepSeek API接入;无需登录,手把手带你使用codex

好多人使用codex时都卡在验证码登录那一步,今天就来介绍一种方法,不需要登录ChatGPT的账号,自然也就不需要手机验证码了;接入DeepSeek的api,一样可以丝滑使用codex;记录从零开始安装使用codex以及DeepSeek API接入的整个过程。不需要登录openAI;

AnChenliang_1002的博客 3535

mybatis的常用动态sql标签

一. 定义 sql 语句 select 标签 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User 或 user resultType :语句返回值类型或别名。注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType 与 resultMap 不能并用) <select id=...

学不死的程序员 8万+

RK3568平台(内存篇)DDR定频修改

如果需要DDR定频,则还需要注释掉其他多余的DDR频率,保留一个即可,例如注释掉opp-528000000、opp-1068000000、opp-1560000000,保留opp-2750000000则是定频最大频率。如果回退必须将 dmc_opp_table节点 的其他频率打开,否则系统无法选择到其他频率运行。ddr频点不对,先把ddr变频关掉,关闭后系统就不会一直重启了,以下是修改DDR频点的。rk3588修改定频节点在rk3588s.dtsi 的 dmc: dmc。

weixin_49303682的博客 1621

Mybatis之动态sql标签

1.Mybatis动态sql MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQ...

只会一点Java 2万+

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

输入电压采集上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, 由于二极 管的正向导通特性, 用户反接电源时亦不会烧坏后级电路。图中 R8、R9 组成分压电路, 由单片机 AD 采集 IO 口 P14 采集 AD 值, 并由计算公式电压 =133300(AD/4096)mV;

Naiva的博客 1994

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MyBatis动态SQL标签

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题if主要时可以实现多条件查询 注意:if标签可通过test属性(即传递过来的数据)的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;反之标签中的内容不会执行使用if标签实现动态SQL查询最好在where条件后面加上恒等的条件1=1,这样可以避免SQL语法错误。 **注意:**where只会将if标签内容前多余的and或or去掉,而不会将内容后多余的and或or

Hiyiin的博客 1375

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【MyBatis动态SQL】解锁动态SQL标签的强大功能

其中,动态SQL标签是MyBatis中一个非常重要的特性,它们让SQL语句的编写更加灵活,能够根据不同的条件动态地构建SQL语句。它通过 collection 属性指定要遍历的集合,item 属性定义了在每次循环中代表集合中单个元素的变量名,open 和 close 属性分别表示整个遍历结果的开头和结尾部分,separator 属性则定义了元素之间的分隔符。示例解释:比如在一个复杂的数据库查询中,某些字段的选择或者一些特定的条件判断部分是在多个不同的查询语句中都会用到的。标签用于引用已经定义好的。

weixin_55939638的博客 1214

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Mybatis】动态sql及常用标签

介绍一下Mybatis中的动态SQL以及常用的标签

Decade0712的博客 2133

Mybatis中动态SQL语句执行的各类标签详解

Mybatis在进行多条件查询时,需要考虑什么时候要把条件加入,什么时候不需要将条件加入Mybatis框架的动态SQL技术是。

qq_60003707的博客 1196

mybatis常用的动态sql标签

说明 我们在编写一些sql查询的过程时,根据条件进行sql的拼接是很麻烦而且容易出错。 而mybatis动态sql标签,正好可以解决这个烦人的问题。 mybatis常用的动态sql标签主要有以下几种: 标签 作用 if 单条件分支,相当于判断语句 choose、when、otherwise 多条件分支,相当于Java中的switch语句 set、where、trim 辅助条件判断,用于拼接语句 foreach 集合进行遍历(尤其是在构建 IN 条件语句的时候) bind 创建

写bug的小哥哥 6264

MyBatis的各种动态sql写法以及各种动态sql所需使用的标签

MyBatis的各种动态sql写法 文章目录MyBatis的各种动态sql写法1、各种动态sql所需使用的标签1.foreach 标签2.where标签3. sql标签4.trim标签2、批量添加、更新、删除3、给一个类起别名 1、各种动态sql所需使用的标签 1.foreach 标签 首先在mapper中接收到的方法参数应该是list、map或者array类型的。 使用方法如下 <foreach item="item" collection="list" index="index" open="

m0_51491702的博客 2348

Mybatis动态sql标签说明

一、简述 1️⃣config 文件常用标签 properties 标签:引入外部 properties 文件资源。 settings 标签:设置 mybatis 全局行为。 typeAlias 标签:减少 mapper 文件配置,给模型类起别名。 transactionManager 标签:配置 mybatis 的事务行为(JDBC|MANAGED) dataSource 标签:配置 mybatis 数据源(POOLED|UNPOOLED|JNDI) mappers 标签:引入Mapper文件或接口(url

ChineseSoftware的博客 3303

一步一步学完MyBatis的动态sql标签

图文并茂+例子解析,全面理解MyBatis的动态sql标签

shang_0122的博客 4244

Mybatis中动态sql常用标签

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

lanyangyangxiaoy的博客 1842

mybatis中动态SQL常用标签详解

【代码】mybatis中动态SQL常用标签详解。

weixin_44603464的博客 2111

数据库操作不再困难,MyBatis动态Sql标签解析

MyBatis的动态SQL功能极大地简化了数据库操作,使得针对不同查询需求的SQL语句生成变得灵活而高效。通过深入了解和掌握、、、、、、、和等核心标签,开发人员将大幅度减少因为参数不同,而写不同sql的麻烦,此时的sql会自己按预设逻辑变成不同的样式。因此,需要牢牢掌握。

战斧的博客 1万+
上一篇: application.yaml和bootstrap.yaml的区别
下一篇: 在数据库中Integer和int格式的区别
小小懒懒
博客等级 码龄5年 449粉丝 312原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小懒懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值