场景还原:
采用 Oracle 数据库, 使用 mybatis-plus 的分页功能,返回的分页数据存在重复,比如第一页的第一条数据,在第二页再次出现。根据日志定位到,SQL 语句写的不严谨。定位分页逻辑的代码在 mybatis-plus-extension.jar 这个jar 中,修改其中的SQL语句。
com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel.OracleDialect
解决方案:
复制这个类到项目中,包名保持不变,然后修改其中的SQL语句即可。
原理:
初步理解是类加载器,加载 classes 和 lib 下的 jar 的顺序原因,优先加载 classes 的类,当没有时在去 加载 jar 中的类。
寄语:
若表述有误,期待大神的指正。