net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “:“ “:“

2,451 阅读1分钟

多表查询和使用自定义复杂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 依赖版本冲突&ndash;&gt;-->
            <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>

这种测试了是可以解决查询的问题,但是会存在修改的时候报错

cf9d9388b3e8ada55b17ac763c077b7.png 通过点进去源码发现这个版本不存在getTables()方法 然后我通过查看GitHub上的源码发现2.0-2.1是可以没有问题,最后解决这个问题,会不会影响其它问题,再测试 github.com/JSQLParser/…