当前位置:   article > 正文

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

caused by: net.sf.jsqlparser.parser.parseexception: encountered unexpected t

报错信息:
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "=" "="
  

报错sql

  1. <select id="tableList" resultType="org.jeecg.modules.activiti.modules.entity.TableInfo">
  2. select
  3. table_name, table_comment, create_time
  4. from information_schema.tables
  5. where table_schema = (select database()) and table_name NOT LIKE 'act_%' and table_name NOT LIKE 'sys_%'
  6. <if test="tableName != null and tableName.trim() != ''">
  7. and table_name like concat('%', #{tableName}, '%')
  8. </if>
  9. order by create_time desc
  10. </select>

错误信息:

  1. Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "=" "="
  2. at line 3, column 22.
  3. Was expecting one of:
  4. "&"
  5. "&&"
  6. ")"
  7. "::"
  8. "<<"
  9. ">>"
  10. "AND"
  11. "AT"
  12. "COLLATE"
  13. "CONNECT"
  14. "EXCEPT"
  15. "FOR"
  16. "GROUP"
  17. "HAVING"
  18. "INTERSECT"
  19. "MINUS"
  20. "OR"
  21. "START"
  22. "UNION"
  23. "XOR"
  24. "["
  25. "^"
  26. "|"
  27. at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:30694)
  28. at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:30527)
  29. at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:7692)
  30. at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:5443)
  31. at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:5645)
  32. at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:5324)
  33. at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:5319)
  34. at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:232)
  35. at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:153)
  36. 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

  1. @InterceptorIgnore(tenantLine = "true")
  2. List<TableInfo> tableList(String tableName);

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

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

别的搜到的方法也记下吧

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

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

解决方案:
解决:

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

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

排除pageHelper中的jsqlparser

  1. <dependency>
  2. <groupId>com.github.pagehelper</groupId>
  3. <artifactId>pagehelper-spring-boot-starter</artifactId>
  4. <version>${pagehelper.boot.version}</version>
  5. <exclusions>
  6. <!-- 解决jsqlparser 依赖版本冲突-->
  7. <exclusion>
  8. <artifactId>jsqlparser</artifactId>
  9. <groupId>com.github.jsqlparser</groupId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>

排除Mybatis-Plus中的jsqlparser

  1. <!-- mybatis-plus 增强CRUD -->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>mybatis-plus-boot-starter</artifactId>
  5. <version>3.4.1</version>
  6. <exclusions>
  7. <!-- 解决jsqlparser 依赖版本冲突&ndash;&gt;-->
  8. <exclusion>
  9. <artifactId>jsqlparser</artifactId>
  10. <groupId>com.github.jsqlparser</groupId>
  11. </exclusion>
  12. </exclusions>
  13. </dependency>

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

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

  1. <dependency>
  2. <groupId>com.github.jsqlparser</groupId>
  3. <artifactId>jsqlparser</artifactId>
  4. <version>4.4</version>
  5. </dependency>

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/735091
推荐阅读
相关标签
  

闽ICP备14008679号