MyBatis动态SQL中trim标签的使用


My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少。

事实上trim标签有点类似于replace效果。

trim 属性

prefix:前缀覆盖并增加其内容

suffix:后缀覆盖并增加其内容

prefixOverrides:前缀判断的条件

suffixOverrides:后缀判断的条件

比如:

Java代码  

  1. select b.* from sys_menu b where 1 = 1
  2. <trim suffix="WHERE" suffixOverrides="AND | OR">
  3. <if test="id != null and id !=‘‘ ">
  4. AND b.id =#{id}
  5. </if>
  6. <if test="name != null">
  7. AND b.menu_name like #{name}
  8. </if>
  9. </trim>

最终sql打印为:

select b.* from sys_menu b where 1 = 1 AND b.menu_name like ‘‘ WHERE

从结果可以发现:

Java代码  

  1. <trim suffix="WHERE" suffixOverrides="AND | OR">

suffix是针对符合suffixOverrides的SQL语句追加后缀suffix值。

总而言之:

Java代码  

  1. <trim suffix="WHERE" suffixOverrides="AND | OR">

And  sqlxxx

最终结果是:

And  sqlxxx WHERE

我不是很确认这种用法的具体场景,但是,就目前mybatis的动态sql语句来看的话,很多标签都足够用了

时间: 2024-12-26 13:06:45

MyBatis动态SQL中trim标签的使用的相关文章

mybatis动态sql中where标签的使用

where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams" parameterType="map" resultType="user"> select * from user <where> <if test="id != null ">id=#{id}</if&g

mybatis动态sql中foreach标签的使用

foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代.如下: <delete id="deleteBatch"> delete from user where id in <foreach collection="array" item="id" index="index" open="(" close=")" separator=",&qu

Mybatis中动态sql中trim标签的使用

trim是一个格式化的标记,可以完成set或者where标记的功能. trim属性: prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条件 suffixOverrides:后缀判断的条件 1. select * from user <trim prefix="WHERE" prefixoverride="AND |OR"> <if test="name != null an

mybatis动态sql中的两个内置参数(_parameter和_databaseId)

<!-- mybatis动态sql的两个内置参数           不只是方法传递过来的参数可以被用来判断,取值       mybatis默认还有两个内置参数           _parameter:代表整个参数                                      单个参数:_parameter就是这个参数                                      多个参数:参数会被封装为一个map:_parameter就是代表这个map       

mybatis动态SQL中的set标签的使用

set标记是mybatis提供的一个智能标记,我一般将其用在修改的sql中,例如以下情况: <update> update user <set> <if test="name != null and name.length()>0">name = #{name},</if> <if test="gender != null and gender.length()>0">gender = #{ge

mybatis动态SQL中的sql片段

在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)</sql> 2.使用 <select id="selectListCountByParam" parameterType="map" resultType="String"> <include refid="sql_

mybatis动态sql中的trim标签的使用

trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" prefixoverride="AND |OR"> <if test="name != null and name.length()>0"> AND name=#{name}</if> <if test="gender

MyBatis从入门到精通(六):MyBatis动态Sql之if标签的用法

最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动态的Sql,主要包含以下3个场景: 根据查询条件实现动态查询 根据参数值实现动态更新某些列 根据参数值实现动态插入某些列 1. 使用if标签实现动态查询 假设有这样1个需求:根据用户的输入条件来查询用户列表,如果输入了用户名,就根据用户名模糊查询,如果输入了邮箱,就根据邮箱精确查询,如果同时输入了用户名和邮箱

mybatis动态sql之foreach标签

foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量.它也允许你指定开头与结尾的字符串以及在迭代结果之间放置分隔符.这个元素是很智能的,因此它不会偶然地附加多余的分隔符. 注意 你可以将任何可迭代对象(如 List.Set 等).Map 对象或者数组对象传递给 foreach 作为集合参数.当使用可迭代对象或者数组时,index 是当前迭代的次数,item 的值是本次迭代获取的元素.当使用 Map 对象(或者 Map.Ent