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 查询条件
执行打印的sql
update tbl_employee set last_name = ?, email = ?, gender = ? where id = ?