原代码:
<if test="test !=null and test.uploadZD !=null and test.uploadZD !='' and test.uploadZD == 'Y'">
报错原因:
mybiatis是基于OGNL语法,在解析单引号+单字符 'Y' 的解析时会默认时char类型。而单引号+多字符 'AA' 或者双引号+单字符 "A" 才会解析为String类型。
解决办法:将单字符转换为String类型。
- toString():'Y'.toString();
- 双引号+单字符: '..."A"...' ;
另外,我还遇到过另一个小坑:
问题:mysql中int类型的参数传值为0时,if 条件不执行,导致条件查询不符合预期。
代码:num为int类型的数值
<if test="num != '' and num != null">
原因:
mysql中int类型的参数传值为0时,会自动转换成空字符串,所以【num != ''】的条件就过滤掉了。
解决办法:
- 去掉[xxx != '']的判断
- 参数改为String类型