使用mybatis注解开发的时候,总会遇到很多问题,但是mybatis的注解并不是那么的美好,一些问题或者错误根本不能给出准确的定位,有时候,甚至会给出Unknow Source的错误,获取就是一个关闭标签没有关上。此类问题,在xml配置中,mybatis做的比较好,所以,官方也不是很放心其注解,建议使用xml。
错误代码: 错误的引起,是"queryParam == '是'"引起的,原因给的是字符串,却拿一个数字比较,mybatis会做一些转化,结果在数字格式化时发生异常。
<if test="queryParam != null and queryParam != ''">
<choose>
<when test="queryField == 'handle'">
and a.handle like concat('%', #{queryParam}, '%')
</when>
<when test="queryField == 'iswinning'">
<choose>
<when test="queryParam == '是'">
and a.iswinning ='1'
</when>
<when test="queryParam == '否'">
and a.iswinning ='2'
</when>
<when test="queryParam == '待定'">
and a.iswinning ='3'
</when>
<otherwise>
</otherwise>
</choose>
</when>
<otherwise>
</otherwise>
</choose>
</if>
#解决错误
引用网上https://segmentfault.com/q/1010000006574557 方法:
- 一是:转成字符串:'0'.toString()
- 二是:加转义实体字符串引号
"
<if test=\"startd != null and startd != "0"\">
- 三是:外部单双引号交换:
<if test='startd != null and startd != \"0\"'>
注意:在xml配置中,使用第三种方式,不需要添加反斜杠("\"),
<if test='startd != null and startd != "0"'>