JSQLParserException异常

前言

SQL中加入了租户字段,报这个错,可以查出数据,但是不多;SQL检查无问题

解决

原因一

引入新的SQL解析器检查解析SQL,与mybatis多租户无关
参考

xml 复制代码
<!--jsqlparser版本太低也无法解析,如2.0-->
<dependency>
   <groupId>com.github.jsqlparser</groupId>
   <artifactId>jsqlparser</artifactId>
   <version>4.2</version>
</dependency>

原因二

SQL递归,当前mybatis不支持SQL递归导致报错,使用一可以解决,但是可能会引起其他SQL报错,注意防范

原因三

多租户,mybatis多租户过滤拦截,使用mybatisPlus用户可尝试加入忽略租户过滤

Mybatis-Plus3.4+,使用拦截忽略注解@InterceptorIgnore(tenantLine = "true")

请注意:Mybatis-Plus3.4之前的版本使用注解@SqlParser(filter=true)

原因四

原因是count函数中嵌套了if函数导致抛异常,不使用"count(if(exprt))"嵌套函数就不会出现异常;

产生异常的原因可能是在后台查询的sql语句中才用了一些sql可能不支持的函数:例如IF(isnull(warning_id), 0 , 1)等,我出现这个这个异常就是sql使用了该if判断条件导致的。改正后不再抛该异常。

或者升级分页的插件(pagehelper)版本也能得到解决
参考链接

相关推荐
战神刘玉栋23 天前
《通俗易懂 · JSqlParser 解析和构造SQL》
架构师·jsqlparser
天幕繁星1 个月前
JSqlParser、JavaCC实操
mybatis·mybatis plus·jsqlparser·javacc