报错信息:
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 依赖版本冲突–>-->
- <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包的版本,这个就需要自己试试了
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |