当前位置: 代码网 > it编程>编程语言>Javascript > 解决:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “xx“ “xx“

解决:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “xx“ “xx“

2024年07月28日 Javascript 我要评论
有的博客说@InterceptorIgnore(tenantLine = "true")的作用是对某个Mapper方法 忽略多租户处理,从这次报错来看不仅是这个作用,感觉应该还有忽略mysql关键词解析的作用,因为我的sql包含关键词database

报错信息:
caused by: net.sf.jsqlparser.parser.parseexception: encountered unexpected token: "=" "="
  

报错sql

<select id="tablelist" resulttype="org.jeecg.modules.activiti.modules.entity.tableinfo">
        select
        table_name, table_comment, create_time
        from information_schema.tables
        where table_schema = (select database()) and table_name not like 'act_%' and table_name not like 'sys_%'
        <if test="tablename != null and tablename.trim() != ''">
            and table_name like concat('%', #{tablename}, '%')
        </if>
        order by create_time desc
    </select>

错误信息:

caused by: net.sf.jsqlparser.parser.parseexception: encountered unexpected token: "=" "="
    at line 3, column 22.
 
was expecting one of:
 
    "&"
    "&&"
    ")"
    "::"
    "<<"
    ">>"
    "and"
    "at"
    "collate"
    "connect"
    "except"
    "for"
    "group"
    "having"
    "intersect"
    "minus"
    "or"
    "start"
    "union"
    "xor"
    "["
    "^"
    "|"
 
	at net.sf.jsqlparser.parser.ccjsqlparser.generateparseexception(ccjsqlparser.java:30694)
	at net.sf.jsqlparser.parser.ccjsqlparser.jj_consume_token(ccjsqlparser.java:30527)
	at net.sf.jsqlparser.parser.ccjsqlparser.fromitem(ccjsqlparser.java:7692)
	at net.sf.jsqlparser.parser.ccjsqlparser.plainselect(ccjsqlparser.java:5443)
	at net.sf.jsqlparser.parser.ccjsqlparser.setoperationlist(ccjsqlparser.java:5645)
	at net.sf.jsqlparser.parser.ccjsqlparser.selectbody(ccjsqlparser.java:5324)
	at net.sf.jsqlparser.parser.ccjsqlparser.select(ccjsqlparser.java:5319)
	at net.sf.jsqlparser.parser.ccjsqlparser.singlestatement(ccjsqlparser.java:232)
	at net.sf.jsqlparser.parser.ccjsqlparser.statement(ccjsqlparser.java:153)
	at net.sf.jsqlparser.parser.ccjsqlparserutil.parsestatement(ccjsqlparserutil.java:188)

1.方法1:先排除自己的代码书写类错误,

类如sql错误,引用类错误,

我的其中一个原因就是mapper对应实体的包名错误,因为是合并别的项目拷贝过来的,包名错误竟然还能编译通过启动,真tm的邪门。。。。。

方法2::在mapper层的请求方法上 忽略mybatis的解析

有的博客说@interceptorignore(tenantline = "true")的作用是对某个mapper方法 忽略多租户处理,从这次报错来看不仅是这个作用,感觉应该还有忽略mysql关键词解析的作用,因为我的sql包含关键词database

  @interceptorignore(tenantline = "true")
    list<tableinfo> tablelist(string tablename);

至此我的bug用上面的方法已经解决了,

加上一些别的问题把问题弄复杂了,搞了几个小时

别的搜到的方法也记下吧

=====================================================================

原因:
mybatis-plus包与原本存在的pagehelper存在com.github.jsqlparser:jsqlparser冲突

解决方案:
解决:

方法3.排除其他依赖中的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 jsqlparser最好还是原来的版本

不知道的话看下 allvalue类所在的版本

        <dependency>
            <groupid>com.github.jsqlparser</groupid>
            <artifactid>jsqlparser</artifactid>
            <version>4.4</version>
        </dependency>

方法4.修改mybatis-plus或pagehelper包的版本,这个就需要自己试试了

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com