使用mybatis 过程中遇到的<if test='glssmc!=null and glssmc==1 '>报错的坑
博客参照:https://www.cnblogs.com/grasp/p/11268049.html
编写mybatis文件时,遇到 使用<if test=''>去判断的sql
<if test="glssmc==null or glssmc==' ' ">
union all
</if>
我一般只有这样写的
当后面加入常量判断的时候就会报错 如:
<if test="glssmc==null or glssmc==' ' or glssmc == '1' ">
union all
</if>
而后想起之前见过 要在'1'的后面加上toString(),尝试以后成功,但不知为何,
在此引用博客中的例子
把<if test=" glssmc!= null or glssmc== '' or glssmc== '1' ">
改为<if test=" glssmc!= null or glssmc== '' or glssmc== "1" ">
或改为<if test=" glssmc!= null or glssmc== '' or glssmc== '1'.toString() ">即可。
原因是:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’1’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
总结下使用方法:单个的字符要写到双引号里面或者使用.toString()才行!
其他的坑还没遇到,有需要参照引用博客即可=-=