在写动态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

05-04 06:45