赞
踩
报错信息:
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)
类如sql错误,引用类错误,
我的其中一个原因就是mapper对应实体的包名错误,因为是合并别的项目拷贝过来的,包名错误竟然还能编译通过启动,真tm的邪门。。。。。
有的博客说@InterceptorIgnore(tenantLine = "true")的作用是对某个Mapper方法 忽略多租户处理,从这次报错来看不仅是这个作用,感觉应该还有忽略mysql关键词解析的作用,因为我的sql包含关键词database
- @InterceptorIgnore(tenantLine = "true")
- List<TableInfo> tableList(String tableName);
至此我的bug用上面的方法已经解决了,
加上一些别的问题把问题弄复杂了,搞了几个小时
别的搜到的方法也记下吧
=====================================================================
原因:
mybatis-plus包与原本存在的pagehelper存在com.github.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 jsqlparser最好还是原来的版本
不知道的话看下 AllValue类所在的版本
- <dependency>
- <groupId>com.github.jsqlparser</groupId>
- <artifactId>jsqlparser</artifactId>
- <version>4.4</version>
- </dependency>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。