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

trim标记是一个格式化的标记,可以完成set或者是where标记在xml文件当中的功能

总结:

trim标签  拼接字符串
         prefix:给拼串后的字符串加上一个前缀 使用最多的是 where 或 set
         prefixOverrides:去掉拼串后的字符串的第一个前缀 一般是 and 或 or
         suffix:给拼串后的字符串加上一个后缀
         suffixOverrides:去掉拼串后字符串的最后一个后缀 一般是 and 或 or
         set标签:在更新中使用,可以去除多余的逗号

具体看代码解释:
查询的情况:

<select id="findByEmpTrim" parameterType="employee" resultType="employee">
    select * from tbl_employee
    
    <trim prefix="where" prefixOverrides="and | or" suffixOverrides="and | or">
        <if test="id!=null and id!=''">
            and id=#{id}
        </if>
        <if test="lastName!=null and lastName!=''">
            and last_name like #{lastName}
        </if>
        <if test="email!=null and email!=''">
            and email like #{email}
        </if>
        <if test="gender!=null and gender!=''">
            and gender = #{gender} and
        </if>
    </trim>
</select>

首先我们需要知道要拼接的字符串是什么 ,要拼接的字符串,也就是标签当中所有条件的拼接

and id=#{id}  and last_name like #{lastName} and email like #{email} and gender = #{gender} and

如果我们需要将这些这些条件带上,就需要去掉以上拼接字符串的第一个 and 前缀 和最后一个 and 后缀,同时也要带上 where

执行打印的sql

select * from tbl_employee where id=? and last_name like ? and email like ? and gender = ? 

更新的情况:

<select id="UpdateByEmpTrim"  parameterType="employee">
        update  tbl_employee
        
        <trim prefix="set" suffix="where id = #{id}" suffixOverrides=",">
            <if test="lastName!=null and lastName!=''">
                 last_name = #{lastName},
            </if>
            <if test="email!=null and email!=''">
                 email = #{email},
            </if>
            <if test="gender!=null and gender!=''">
                gender = #{gender},
            </if>
        </trim>
    </select>

要拼接的字符串,也就是标签当中所有条件的拼接

 last_name = #{lastName},email = #{email},gender = #{gender},

我们要实现更新功能,就需要在拼接字符串的最前面加上一个set 和去掉拼接字符串最后一个后缀’,’ 然后加上where 查询条件
mybatis动态sql中的trim标签的使用_第1张图片
执行打印的sql

update tbl_employee set last_name = ?, email = ?, gender = ? where id = ? 

你可能感兴趣的:(java)