prefix : 给<trim>包裹的sql语句加上前缀.
**suffix **: 给<trim>包裹的sql语句加上后缀.
prefixOverrides: 如果<trim>包裹的sql语句是空语句(经常出现在 if 判断为否的情况下),取消指定的前缀,如where.
suffixOverrides: 如果<trim>包裹的sql语句是空语句(经常出现在 if 判断为否的情况下),取消指定的后缀,如and | or. 逗号等
拿个 user表举例
prefix="(" suffix=")" 会在我的<trim></trim> 之间包含的sql语句的开头处加上“(” ,结束处加上“)”, 因为我在sql中插入的字段有多个,之间用逗号连接,但是如果不做任何处理的话,插入语句 INSERT INTO 表名称 VALUES (值1, 值2,....) 中最后一个值得末尾会多一个“,”,而suffixOverrides="," 可以帮我们去掉这个后缀的逗号。
<insert id="insertSelective" parameterType="com.dhcc.bugkiller.web.model.User" >
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="name != null" >
name,
</if>
<if test="password != null" >
password,
</if>
<if test="salt != null" >
salt,
</if>
<if test="nickname != null" >
nickName,
</if>
<if test="email != null" >
email,
</if>
<if test="department != null" >
department,
</if>
<if test="photo != null" >
photo,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="name != null" >
#{name,jdbcType=VARCHAR},
</if>
<if test="password != null" >
#{password,jdbcType=VARCHAR},
</if>
<if test="salt != null" >
#{salt,jdbcType=VARCHAR},
</if>
<if test="nickname != null" >
#{nickname,jdbcType=VARCHAR},
</if>
<if test="email != null" >
#{email,jdbcType=VARCHAR},
</if>
<if test="department != null" >
#{department,jdbcType=VARCHAR},
</if>
<if test="photo != null" >
#{photo,jdbcType=VARCHAR},
</if>
</trim>
</insert>