mybatis动态sql中test判断Boolean

mybatis中动态sql使用if test判断String,pojo一般写法如下(sql片段):

String


    AND country_area=#{countryArea}

pojo


    AND s.subject LIKE concat('%',#{map.keyWord},'%')

但是如果是Boolean类型,如果写成如下方式,会出现false无效的bug,一直执行的都是true

        
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=1
                WHERE s.id=#{id}
            
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=0
                WHERE s.id=#{id}
            
        
    
网上有一些资料说只用判断是否为null就可以了,个人检验是错误的。下面的也是错误的

        
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=1
                WHERE s.id=#{id}
            
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=0
                WHERE s.id=#{id}
            
        
    

正确的写法应该是


        
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=1
                WHERE s.id=#{id}
            
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=0
                WHERE s.id=#{id}
            
        
    

或者


        
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=1
                WHERE s.id=#{id}
            
            
                UPDATE epc_subject_center s
                SET s.have_new_comment=0
                WHERE s.id=#{id}
            
        
    

你可能感兴趣的:(mybatis动态sql中test判断Boolean)