mybatis动态sql中如何使用trim标签呢?

欣喜 MyBatis 发布时间:2025-01-23 16:51:45 阅读数:4599 1
下文笔者讲述mybatis中trim标签的功能简介说明,如下所示

trim的功能

用于在SQL语句中动态地添加或删除前缀、后缀,
 并根据条件去除多余的分隔符(如逗号、空格等)
 
`<trim>` 标签
    提供灵活方式来处理SQL语句拼接
	避免手动添加和删除分隔符时可能出现的错误

select * from user 
<trim prefix="WHERE" prefixoverride="AND |OR">
    <if test="name != null and name.length()>0"> AND name=#{name}
    </if>
    <if test="gender != null and gender.length()>0"> AND gender=#{gender}
    </if>
</trim>

TRIM标签的属性说明:

 **`prefix`**:在内容前添加的字符串。
 **`prefixOverrides`**:如果内容以指定的字符串开头,则删除这些字符串。
 **`suffix`**:在内容后添加的字符串。
 **`suffixOverrides`**:如果内容以指定的字符串结尾,则删除这些字符串。

trim示例说明

例1:基本用法

假设我们有一个 `User` 表,并且我们希望根据条件动态构建 `WHERE` 子句。
 
<select id="findUsers" resultType="User">
    SELECT * FROM users
    <trim prefix="WHERE" prefixOverrides="AND |OR ">
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </trim>
</select>
 
示例说明:
- `prefix="WHERE"`:如果内容不为空,则在内容前添加 `WHERE`。
- `prefixOverrides="AND |OR "`:如果内容以 `AND` 或 `OR` 开头,则删除这些字符串。

 例2:使用 `suffixOverrides`

假设我们希望动态构建一个 `INSERT` 语句,并且根据条件动态添加列和值。

```xml
<insert id="insertUser">
    INSERT INTO users
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="name != null">
            name,
        </if>
        <if test="age != null">
            age,
        </if>
    </trim>
    VALUES
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="name != null">
            #{name},
        </if>
        <if test="age != null">
            #{age},
        </if>
    </trim>
</insert>
```


在这个示例中:
- `suffixOverrides=","`:如果内容以逗号结尾,则删除逗号。

#### 示例 3:结合 `set` 标签

`<trim>` 标签也可以用于 `UPDATE` 语句中的 `SET` 子句。
 
<update id="updateUser">
    UPDATE users
    <trim prefix="SET" suffixOverrides=",">
        <if test="name != null">
            name = #{name},
        </if>
        <if test="age != null">
            age = #{age},
        </if>
    </trim>
    WHERE id = #{id}
</update>
 
示例说明:
- `prefix="SET"`:如果内容不为空,则在内容前添加 `SET`。
- `suffixOverrides=","`:如果内容以逗号结尾,则删除逗号。

`<trim>`标签
   可动态的添加和删除前缀、后缀以及覆盖多余的分隔符
     使得动态 SQL 的编写更加简洁和易于维护
在trim标签中,我们可以使用 `prefix`、`prefixOverrides`、`suffix` 和 `suffixOverrides` 属性
 根据自己的需求拼接出合适的sql 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202501/8216.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者