这是由于mybatis参数格式化异常导致,例如在动态sql拼接中String类型参数和数字比较。
<if test="param.xxx!= '2'">
其中xxx为String类型,加单引号是无法解决的,比如:param.xxx
!= 'Y',此时,mybatis认为拿一个字符串(String)和一个字符(char)比较,也会报错。
因此,有几种方法可以解决此问题:
解决方法
- 用toString()转成字符串,
'2'.toString()
<if test="isAdoptRange=='y'.toString() or isAdoptRange=='Y'.toString()">
...
</if>
2. 改为双引号"2",外层使用单引号。
<if test='param.xxx!= "2"'>
3. 加转义实体字符串引号"
<if test=\"isAdoptRange != null and isAdoptRange != "Y"\">
转载自: