在写动态sql时发现字符串的判断没有生效
<if test="CLLX != null and CLLX != ''"> and a.CLLX = #{CLLX} </if>
当CLLX为空字符串时判断依旧会成立
网上查询后有以下几种解决办法
1.加上toString()
<if test="CLLX != null and CLLX != ''.toString()"> and a.CLLX = #{CLLX} </if>
2.改用双引号
<if test='CLLX != null and CLLX != ""'> and a.CLLX = #{CLLX} </if>
3.使用自定义方法
package com; public class Utils { public static Boolean isString(String str) { return str != null && !str.isEmpty(); } }
<if test="@com.Utils@isString(CLLX)"> and a.CLLX = #{CLLX} </if>
Mybatis会将 “” 解析为字符(java 强类型语言, ‘’ char 类型 ),而非字符串,不能做到判断的效果。
https://blog.csdn.net/haha_sir/article/details/79291968
https://blog.csdn.net/huahuahua0809/article/details/76637798