Mybatis动态插入数据、更新数据

有时我们控制同一张表,但传入的参数不固定,操作表的字段不固定,就要用到mybatis动态插入。xml如下:


       insert cx_customer_message
       (ID,MEMBERID,
         
             MESSAGEE_CLASSIFY,
         
         
             MESSAGE_CODE,
         
         
             MESSAGE_CONTENT
         
        )
       values (
         #{id, jdbcType=VARCHAR},
         #{memberId, jdbcType=VARCHAR},
          
            #{messageClassify, jdbcType=VARCHAR},
          
          
            #{messageCode, jdbcType=VARCHAR},
          
          
            #{messageContent, jdbcType=VARCHAR}
          
        )

 问题来了,当messageClassify !=null,但messageCode 和messageContent 为空时,会多出来逗号,以至于mybatis报错。正确的用法如下.xml:


       insert cx_customer_message
        
          ID,MEMBERID,
          
             MESSAGEE_CLASSIFY,
          
          
             MESSAGE_CODE,
          
         
             MESSAGE_CONTENT,
         
        

        
          #{id, jdbcType=VARCHAR},
          #{memberId, jdbcType=VARCHAR},
          
            #{messageClassify, jdbcType=VARCHAR},
          
          
            #{messageCode, jdbcType=VARCHAR},
          
          
            #{messageContent, jdbcType=VARCHAR},
          
          

trim标签的属性

prefix:前缀覆盖并增加其内容。也就是给中的sql语句加上前缀;
suffix:后缀覆盖并增加其内容。给包裹的sql语句加上后缀;
prefixOverrides:前缀判断的条件。取消指定的前缀,如where;
suffixOverrides:后缀判断的条件。取消指定的后缀,如and | or.,逗号等。

控制同一张表,但传入的参数不固定,操作表的字段不固定,就要用到mybatis动态更新,普通的的方法会出现多余的字符。

方法一:使用set标签


     update cx_customer_message
     
        
          MESSAGEE_CLASSIFY = #{messageClassify, jdbcType=VARCHAR},
        
        
          MESSAGE_CODE = #{messageCode, jdbcType=VARCHAR},
        
        
          MESSAGE_CONTENT = #{messageContent, jdbcType=VARCHAR},
        
     
     where ID = #{id, jdbcType=VARCHAR}
     and MEMBERID = #{memberId, jdbcType=VARCHAR} 

方法二:使用trim标签


     update cx_customer_message
       
        
          MESSAGEE_CLASSIFY = #{messageClassify, jdbcType=VARCHAR},
        
        
          MESSAGE_CODE = #{messageCode, jdbcType=VARCHAR},
        
        
          MESSAGE_CONTENT = #{messageContent, jdbcType=VARCHAR},
            
       
     where ID = #{id, jdbcType=VARCHAR}
     and MEMBERID = #{memberId, jdbcType=VARCHAR} 

 

 

你可能感兴趣的:(java框架,后端)