trim 表签的使用
trim元素的主要功能是可以在自己包含的内容钱加上某些前缀,也可以在其后加上某写后缀,与之对应的属性是prefix和suffix;
可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides
trim标签的属性
prefix:前缀覆盖并增加其内容。也就是给中的sql语句加上前缀; suffix:后缀覆盖并增加其内容。给包裹的sql语句加上后缀; prefixOverrides:前缀判断的条件。取消指定的前缀,如where; suffixOverrides:后缀判断的条件。取消指定的后缀,如and | or.,逗号等。
例如:<trim prefix="values (" suffix=")">..............</trim>
这就表示在。。。。。内容的前面加上 values (,在。。。。。内容后面加上 )
什么时候会折用这个标签呢?一般如果有多个if判断条件是就会使用
问题来了,当messageClassify !=null,但messageCode 和messageContent 为空时,会多出来逗号,以至于mybatis报错。
<insert id="insertMessage" parameterType="com.sf.ccsp.member.client.request.MessageReq" >
insert cx_customer_message
<trim prefix="(" suffix=")" suffixOverrides="," >
ID,MEMBERID,
<if test='messageClassify != null and messageClassify != "" '>
MESSAGEE_CLASSIFY,
</if >
<if test='messageCode != null and messageCode != "" '>
MESSAGE_CODE,
</if >
<if test='messageContent != null and messageContent != "" '>
MESSAGE_CONTENT,
</if >
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
#{id, jdbcType=VARCHAR},
#{memberId, jdbcType=VARCHAR},
<if test='messageClassify != null and messageClassify != "" '>
#{messageClassify, jdbcType=VARCHAR},
</if >
<if test='messageCode != null and messageCode != "" '>
#{messageCode, jdbcType=VARCHAR},
</if >
<if test='messageContent != null and messageContent != "" '>
#{messageContent, jdbcType=VARCHAR},
</if >
</trim>
</insert>
剩下的标签都类似。。。。。