①在MyBatis的xml中如果写了UNION比较复杂的查询,有时候报错optimize this sql to a count sql has exception

net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "UNION" "UNION"
    at line 38, column 16.

此时在mapper方法上方加上注解

@InterceptorIgnore(illegalSql = "true", tenantLine = "true")

即可避开报错,如果不写注解,方法仍然可以执行,只是日志会提示错误,实际不影响程序运行。

②PaginationInnerInterceptor:354 - optimize this sql to a count sql has error, sql

根本解决方案是:升级框架版本。
在最新版本中被修复掉了,项目中当前用的版本是 3.4.0,是3年前的版本。最新 v3.5.3.1
不过新版本框架,修改了Service接口,需要我们修改项目源代码(要改的地方很多,所有Service接口,都要实现新的方法)。

另一种方法是:关闭分页查询SQL优化。(实际使用的!)
需要修改配置,调用 Page(简单分页模型) 对象的 setOptimizeCountSql 方法,设置为 false。
经过测试,关闭分页查询SQL优化后,就不再警告了

Gitee官网的相关 issue
https://gitee.com/baomidou/mybatis-plus/issues/I3ZAK1

Logo

鸿蒙生态一站式服务平台。

更多推荐