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

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

码农世界 2024-06-13 后端 100 次浏览 0个评论

报错信息:

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "=" "="

  

报错sql

错误信息:

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的邪门。。。。。

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

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

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

  @InterceptorIgnore(tenantLine = "true")
    List tableList(String tableName);

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

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

别的搜到的方法也记下吧

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

原因:

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

解决方案:

解决:

方法3.排除其他依赖中的jsqlparser的包,引入新的jsqlparser,

也可以只排除在其中一个的,使用另一个的jsqlparser包,不用重新导入

排除pageHelper中的jsqlparser

            
                com.github.pagehelper
                pagehelper-spring-boot-starter
                ${pagehelper.boot.version}
                
                    
                    
                        jsqlparser
                        com.github.jsqlparser
                    
                
            

排除Mybatis-Plus中的jsqlparser

        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.1
            
                
                
                    jsqlparser
                    com.github.jsqlparser
                                      				
            
        

引入新的jsqlparser jsqlparser最好还是原来的版本

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

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

        
            com.github.jsqlparser
            jsqlparser
            4.4
        

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

转载请注明来自码农世界,本文标题:《解决:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “xx“ “xx“》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,100人围观)参与讨论

还没有评论,来说两句吧...

Top