mybatis:org.apache.ibatis.ognl.ParseException: Encountered " "OR "" at line 1, column 26错误解决

在mybatis项目中有一个sql做了对list集合做判空操作,sql如下:

<if test="personnelHasList == null OR personnelHasList.size == 0">

运行项目的时候发现时不时会出现以下报错情况:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘personnelHasList == null OR personnelHasList.size == 0’. Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression: personnelHasList == null OR personnelHasList.size == 0 [org.apache.ibatis.ognl.ParseException: Encountered ” “OR “” at line 1, column 26.
Was expecting one of:

“,” …
“=” …
“?” …
“||” …
“or” …
“&&” …
“and” …
“|” …
“bor” …
“^” …
“xor” …
“&” …
“band” …
“==” …
“eq” …
“!=” …
“neq” …
“<” …
“lt” …
“>” …
“gt” …
“<=” …
“lte” …
“>=” …
“gte” …
“in” …
“not” …
“<<” …
“shl” …
“>>” …
“shr” …
“>>>” …
“ushr” …
“+” …
“-” …
“*” …
“/” …
“%” …
“instanceof” …
“.” …
“(” …
“[” …

]] with root cause
org.apache.ibatis.ognl.ParseException: Encountered ” “OR “” at line 1, column 26.
Was expecting one of:

“,” …
“=” …
“?” …
“||” …
“or” …
“&&” …
“and” …
“|” …
“bor” …
“^” …
“xor” …
“&” …
“band” …
“==” …
“eq” …
“!=” …
“neq” …
“<” …
“lt” …
“>” …
“gt” …
“<=” …
“lte” …
“>=” …
“gte” …
“in” …
“not” …
“<<” …
“shl” …
“>>” …
“shr” …
“>>>” …
“ushr” …
“+” …
“-” …
“*” …
“/” …
“%” …
“instanceof” …
“.” …
“(” …
“[” …

一开始在网上查询该报错信息,采纳了一个这样的说法:存在不合法的符号,  
导致xml解析不成功。于是从其他能运行通过的xml文件中复制了==号,发现  
还真的运行成功了,当时时间紧迫,手头还有其他任务,便没有仔细去验证多  
几次,如果多验证几次,就会发现实际问题还是存在(这一点我到现在也还没  
明白为何开始的时候可以运行成功),之后我试着将“OR”改成“or”和 改成  
“||”,发现就会没问题,初步判断是mybatis中不识别大写OR的原因。

你可能感兴趣的:(Java学习)