@InterceptorIgnore(illegalSql = “true“, tenantLine = “true“)解决MyBaits ParseException unexpected toke

①在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

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值