版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fanfanzk1314/article/details/82628998
最近在项目中遇到这样的需求:根据不同的条件修改和插入sql语句时,要写很多的sql这样效率有些低,这时有一个很好的解决方法,分享一下:
控制同一张表,但传入的参数不固定,操作表的字段不固定,就要用到mybatis动态插入。.xml如下
<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>
下面为修改语句的例子:
这里是使用trim标签(这里只是其中的一种方法)
<update id="updateMessage" parameterType="com.sf.ccsp.member.client.request.MessageReq" >
update cx_customer_message
<trim prefix="set" suffixOverrides=",">
<if test='messageClassify != null and messageClassify != "" '>
MESSAGEE_CLASSIFY = #{messageClassify, jdbcType=VARCHAR},
</if>
<if test='messageCode != null and messageCode != "" '>
MESSAGE_CODE = #{messageCode, jdbcType=VARCHAR},
</if>
<if test='messageContent != null and messageContent != "" '>
MESSAGE_CONTENT = #{messageContent, jdbcType=VARCHAR},
</if>
</trim>
where ID = #{id, jdbcType=VARCHAR}
and MEMBERID = #{memberId, jdbcType=VARCHAR}
</update>
完结~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~