使用mybatis 过程中遇到的报错的坑

博客参照: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()才行!

其他的坑还没遇到,有需要参照引用博客即可=-=


 

上一篇:【堆排序】优先队列


下一篇:Springmvc-跨域请求-后端设置)