使用Mybatis多条件非空验证查询错误

在开发中遇以下错误,

在使用xml文件where语句时,我类A引用类B,前台根据类B属性查询A的信息。

 


 

注意这里

 

 

        
            
                and (b.brand_name LIKE '%${brand.brandName}%'
                OR b.brand_name_en LIKE '%${brand.brandName}%')
            
            
                and b.term_trade_codes = #{brand.termTradeCodes}
            
        

之前没写嵌套if语句,上面两个参数存在即可正常运行,如不存在报如下异常

 

 

org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "brandName")

 

之后加上嵌套if

 

 

如brand属性为空则正常。存在则报错

 

java.lang.IllegalArgumentException: invalid comparison: com.zwyl.kks.commodity.entity.Brand and java.lang.String

之后找了半天发现if语句中去掉and brand!='' 则正常运行!

下面正确嵌套

 


    
        and (b.brand_name LIKE '%${brand.brandName}%'
        OR b.brand_name_en LIKE '%${brand.brandName}%')
    
    
        and b.term_trade_codes = #{brand.termTradeCodes}
    

 

 

 

你可能感兴趣的:(日常问题)