mybatis中動態sql語句(2)
阿新 • • 發佈:2019-01-26
最近在專案中遇到這樣的需求:根據不同的條件修改和插入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>
完結~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~