多表查询和使用自定义复杂sql的时候报这个异常,必应搜索很多就是没办法解决问题。 查到一些解决方案
解决方案1:
3.3.1版本以上解决:
mapper文件上面加上这个注解
@SqlParser(filter=true)
复制代码
以下版本还要在yml中加入以下:
mybatis-plus:
global-config:
sql-parser-cache: true
这个解决方案可以解决,但是需要涉及调整的太多,只要有自定义的接口上都要加@SqlParser(filter=true)所以这个不考虑
解决方案2:
1.排除其他依赖中的jsqlparser的包,引入新的jsqlparser,也可以只排除在其中一个的,使用另一个的jsqlparser包,不用重新导入
排除pageHelper中的jsqlparser
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version>
<exclusions>
<!-- 解决jsqlparser 依赖版本冲突-->
<exclusion>
<artifactId>jsqlparser</artifactId>
<groupId>com.github.jsqlparser</groupId>
</exclusion>
</exclusions>
</dependency>
排除Mybatis-Plus中的jsqlparser
<!-- mybatis-plus 增强CRUD -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
<exclusions>
<!-- 解决jsqlparser 依赖版本冲突–>-->
<exclusion>
<artifactId>jsqlparser</artifactId>
<groupId>com.github.jsqlparser</groupId>
</exclusion>
</exclusions>
</dependency>
引入新的jsqlparser
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.2</version>
</dependency>
这种测试了是可以解决查询的问题,但是会存在修改的时候报错
通过点进去源码发现这个版本不存在getTables()方法
然后我通过查看GitHub上的源码发现2.0-2.1是可以没有问题,最后解决这个问题,会不会影响其它问题,再测试
github.com/JSQLParser/…