mybatis-plus分页优化告警

410 阅读1分钟

描述

记录一下最近修复有关分页查询SQL告警的bug,下面是告警信息:

com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor:[360] - optimize this sql to a count sql has exception, sql:"...
...
...
...
...
...
...
...
...
...", exception:
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "("
    at line 40, column 22.

Was expecting one of:

    "&"
    "::"
    ";"
    "<<"
    ">>"
    "ASC"
    "COLLATE"
    "DESC"
    "EMIT"
    "NULLS"
    "["
    "^"
    "|"
    <EOF>

通过关键字寻找了到的解决问题的帖子,最后在业务逻辑中添加了一行代码把该问题解决。

Page<xxx> page = new Page<>(pageNo, pageSize);
page.setOptimizeCountSql(false);

经过

回顾一下该bug的解决历程:

第一阶段以为是SQL的问题,然后就疯狂的调整SQL一段时间之后问题并未得到解决。

第二阶段在第一阶段没有收获的时候就切换了思路,觉得可能不是SQL的问题,最后在帖子中寻找到了答案,问题得以解决。

总结

该bug产生的原因是mybatis-plus框架本身会在分页查询的时候做count优化,那么我们取消掉该举措就行。