技巧:MyBatis 中的trim标签,好用!

MyBatis动态SQL中if、where、trim、choose、when、otherwise、foreach标签及sql标签范例 阅读详情

作者 | wt_better

来源 | https://blog.youkuaiyun.com/wt_better/article/details/80992014

mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。

以下是trim标签中涉及到的属性:

下面使用几个例子来说明trim标签的使用。

1、使用trim标签去除多余的and关键字

有这样的一个例子:

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG 
  WHERE 
  <if test="state != null">
    state = #{state}
  </if> 
  <if test="title != null">
    AND title like #{title}
  </if>
  <if test="author != null and author.name != null">
    AND author_name like #{author.name}
  </if>
</select>

如果这些条件没有一个能匹配上会发生什么?最终这条 SQL 会变成这样:

SELECT * FROM BLOG
WHERE

这会导致查询失败。如果仅仅第二个条件匹配又会怎样?这条 SQL 最终会是这样:

SELECT * FROM BLOG
WHERE 
AND title like ‘someTitle’

你可以使用where标签来解决这个问题,where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。搜索公众号:MarkerHub,关注回复[vue]获取前后端入门教程!

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG 
  <where> 
    <if test="state != null">
         state = #{state}
    </if> 
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
  </where>
</select>

trim标签也可以完成相同的功能,写法如下:

<trim prefix="WHERE" prefixOverrides="AND">
 <if test="state != null">
   state = #{state}
 </if> 
 <if test="title != null">
   AND title like #{title}
 </if>
 <if test="author != null and author.name != null">
   AND author_name like #{author.name}
 </if>
</trim>

2、使用trim标签去除多余的逗号

有如下的例子:

如果红框里面的条件没有匹配上,sql语句会变成如下:

INSERT INTO role(role_name,) VALUES(roleName,)

插入将会失败。使用trim标签可以解决此问题,只需做少量的修改,如下所示:

其中最重要的属性是

suffixOverrides=","

表示去除sql语句结尾多余的逗号

注:如果你有兴趣的话,也可以研究下Mybatis逆向工程生成的Mapper文件,其中也使用了trim标签,但结合了foreach、choose等标签,更多的是牵扯到Criterion的源码研究。不过研究完之后,你将熟练掌握mybatis各种标签的使用,学到Criterion的设计思想,对自己的启发将会很大。

如果想要了解更多关余trim标签的内容,请移步《trim标签源码解析》。本文参考 Mybatis官方文档(https://mybatis.org/mybatis-3/zh/dynamic-sql.html)

STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240) 屏幕厂家提供的都是标准库,网上找了找没看到好用的HAL库屏幕驱动,因此本文对HAL库驱动TFT屏幕进行详细讲解。 阅读详情

相关推荐

使用ITK-SNAP软件进行医学图像的标注(label标签设置、调整等)(windows版本,如mac和linux操作则略有不同)

使用ITK-SNAP软件进行医学图像的标注工作:如肿瘤、炎症、出血、梗死等的多类 目标轮廓勾画等。

qianshuqinghan的博客 2万+

mybatics之<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>

1.&lt;trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""&gt;&lt;/trim&gt; prefix:在trim标签内sql语句加上前缀。 suffix:在trim标签内sql语句加上后缀。 suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=","

醒悟wjn的博客 6万+

从牛顿冷却定律到热传导方程:一维热传导方程的物理直觉与数学推导

本文从牛顿冷却定律出发,结合傅里叶热传导定律和能量守恒原理,系统推导了一维热传导方程的数学形式。通过微元分析和物理直觉,揭示了温度随时间变化与空间二阶导数之间的关系,并阐释了热扩散率α的物理意义。文章还探讨了方程的边界条件、数值解法及其在材料科学和工程中的应用,为理解热量传递提供了清晰的物理图像和数学框架。

palm99的专栏 840

MyBatis框架

一、什么是MyBatis? MyBatis是一个基于Java的持久层框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。MyBatis 可以使用XML 或注解来配置和映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 二、Mybatis动态sql有什么用? My...

ParTing198的博客 593

Unity AR开发实战:从Vuforia图片识别到实体识别全流程解析

增强现实(AR)技术通过计算机视觉算法将虚拟信息叠加到现实世界,其核心原理在于对现实环境的感知与理解。在移动端AR开发中,图像识别与物体识别是实现虚实融合的关键技术,它们决定了虚拟内容能否准确、稳定地与现实对象对齐。Vuforia作为成熟的商业AR SDK,为开发者提供了从平面图像识别(Image Target)到三维实体识别(Model Target)的完整解决方案,极大降低了计算机视觉技术的应用门槛。在工程实践中,Vuforia通过封装复杂的特征提取与匹配算法,使开发者能够专注于交互设计与内容制作,广泛

weixin_30972263的博客 303

计算机组成原理实验:手把手教你用模拟程序实现中断机制(附完整代码)

本文通过一个计算机组成原理模拟实验,手把手教你从零实现一个可工作的中断系统。实验详细演示了如何配置中断控制器、编写主程序与中断服务程序,并观察中断响应、现场保护和恢复的全过程,深入解析了中断原理的核心机制。

473

Mybatis基础知识点:trim标签的使用

作者:wt_betterblog.youkuaiyun.com/wt_better/article/details/80992014mybatis的trim标签一般用于去除sql语句中多余的and关...

Java知音 685

【CANoe示例分析】SOMEIPWithvCDL_16

本示例来源于官方提供的示例工程:0004_基于vCDL实现SOMEIP通信_Demo\0004_基于vCDL实现SOMEIP通信_Demo\SOMEIPWithvCDL。

jasonj333 571

mybatis中sql中的特殊符号<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>

最近用springboot来写项目,看同事的sql中有用到suffixOverides,有点感兴趣,就查了一下,感觉挺有用的,和大家分享一下。 mybatis之 1. prefix:在trim标签内sql语句加上前缀。 suffix:在trim标签内sql语句加上后缀。 suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides="

weixin_38909672的博客 3242

从生产订单到整车交付,SAP 离散制造在汽车行业里的真实落点

汽车行业谈数字化,很容易一上来就谈智能工厂、数字孪生、AI 排产、无人仓、视觉质检。可落到 SAP 项目现场,真正把工厂撑起来的,往往还是几个很朴素的问题,客户订单来了以后,BOM 能不能准确展开,物料能不能准时到线,产能有没有被过度承诺,生产订单能不能被车间正确执行,质量问题能不能追溯,成本能不能按工单和批次沉淀下来。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 115

波士顿房价预测分析----以线性回归LinearRegression为例

波士顿房价数据集包括506个样本,每个样本包括13个特征变量和该地区的平均房价,房价显然和多个特征变量相关,先选择一元线性回归与多个特征建立线性方程,观察模型预测的好坏,再选择多元线性回归进行房价预测。13个特征变量缩写含义CRIM城镇人均犯罪率ZN住宅用地所占比例INDUS城镇中非住宅用地所占比例CHAS虚拟变量,用于回归分析NOX环保指数RM每栋住宅的房间数AGE1940 年以前建成的自住单位的比例DIS距离 5 个波士顿的就业中心的加权距离RAD。

我走的每一步都算数 843

java小知识--mybatis好用标签之trim

<insert id="insertProduct" parameterType="Production"> insert into py <trim prefix="(" suffix=")" suffixOverrides=","> <if test="wc.name!=null and wc.name!=''"> name, </if>...

qq_40954477的博客 261

UNet 改进(45):轻松集成Triplet Attention,让分割效果起飞!

本文介绍了一种在U-Net架构中集成CSRA残差注意力模块的方法。该模块通过结合通道注意力和空间注意力机制,在U-Net的瓶颈层对特征进行自适应重标定,使网络聚焦于关键区域。文章详细解析了代码实现,包括基础构建块DoubleConv、核心CSRA模块原理及其在U-Net中的战略位置集成。测试表明该模型能保持标准U-Net的输入输出维度,同时通过注意力机制提升特征选择能力。这种模块化设计便于在不同任务中应用,为图像分割领域提供了有效的注意力增强方案。

2401_82355416的博客 104

html select标签 选择事件_技巧:MyBatis 中的trim标签,好用!

作者 | wt_better来源 |https://blog.youkuaiyun.com/wt_better/article/details/80992014mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。以下是tr...

weixin_39805529的博客 205

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MyBatis 中的trim标签

mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。

xiaoweids的博客 8676

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

mybatis标签之trim标签

trim标记是一个格式化的标记,主要用于拼接sql的条件语句(前缀或后缀的添加或忽略),可以完成set或者是where标记的功能。 trim属性主要有以下四个 prefix:在trim标签内sql语句加上前缀 suffix:在trim标签内sql语句加上后缀 prefixOverrides:指定去除多余的前缀内容,如:prefixOverrides=“AND | OR”,去除trim标签内sql...

学不死的程序员 6295

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mybatis trim标签的使用

mybatis trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句拼接where、set等前缀

wt_better的博客 15万+

Mybatis中的trim标签 介绍

使用过trim标签都知道trim标签有四个属性prefix,prefixOverrides,suffix,suffixOverrides 本人一直对这四个标签的名字无法理解,并对其功能感到混乱。下面是自己思考后的一些总结: trim标签使用 1、trim 有四个属性 2、prefix,suffix 表示在trim标签包裹的部分的前面或者后面添加内容(注意:是没有prefixOverrides,s

我给媳妇儿讲java 3万+

MyBatis中的trim 标签 用法

Mybatis中trim的作用 mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。 以下是trim标签中涉及到的属性: 下面使用两个例子来说明trim标签的使用。 使用trim标签去除多余的and关键字 <select id="findActiveBlogLike" resultType="Blog">

MW 2605

MyBatis之trim标签的作用原理解析

MyBatis之trim标签的作用原理解析

m0_48333563的博客 4274

技巧:MyBatis 中的trim标签。

转载自品略图书馆http://www.pinlue.com/article/2020/06/2415/5810812477606.html mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。 以下是trim标签中涉及到的属性:下面使用几个例子来说明trim标签的使用。 1、使用trim标签去除多余的and关键字有这...

yihuliunian的博客 233

MyBatis 之四(动态SQL之 if、trim、where、set、foreach 标签)

动态 SQL 是 MyBatis 的强大特性之一。 使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。 本篇主要学习动态 SQL的五个标签 if trim where set foreach

m0_58761900的博客 3476

MyBatis 动态SQL之<trim>标签

一文中提到:在if标签和choose-when-otherwise标签的案例中,SQL语句加入了一个条件’1=1’,它既保证了where后面的条件成,页避免了where后面出现的第一个词语是and 或者or之类的关键字。假设把条件‘1=1’去掉,可以出现以下语句上面语句因为出现了where后直接是and,在sql运行时会报语法错误。这个时候可以使用where标签处理,这里也可以使用trim标签处理。

yandao的博客 3484
上一篇: 10M/S!百度网盘偷偷更新,终于实现免费不限速了!
下一篇: Spring Boot 最流行的 16 条实践解读,值得收藏!
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值