关于PageHelper5.1.4插件分页失败的原因之一

懒得看的可以直接翻到最下面的结论:

按照网上教程配置MyBatis PageHelper插件,提示失败

关于PageHelper5.1.4插件分页失败的原因之一

提示错误关于PageHelper5.1.4插件分页失败的原因之一

查阅源码可知最新的PageHelper插件拦截器的dialect属性需继承Dialect类,value应为Dialect子类的全限定名。如下所示:

关于PageHelper5.1.4插件分页失败的原因之一

查看源码可知Dialect之类如下:

关于PageHelper5.1.4插件分页失败的原因之一

这里我用的是MySQL数据库,所以方言是MySQLDialect,因此配置plugin如下:

关于PageHelper5.1.4插件分页失败的原因之一

再次进行测试,结果如下:

关于PageHelper5.1.4插件分页失败的原因之一

显而易见,虽然没有报错,但程序也没有实现分页效果,于是阅读源码发现以下:

关于PageHelper5.1.4插件分页失败的原因之一

而我们配置的方言类MySqlDialect中的skip方法实现如下:

关于PageHelper5.1.4插件分页失败的原因之一

关于PageHelper5.1.4插件分页失败的原因之一

猜想PageHelper会进行自动配置,查看默认的Dialect:

关于PageHelper5.1.4插件分页失败的原因之一

查看PageHelper中skip方法的实现:

关于PageHelper5.1.4插件分页失败的原因之一

autoDialect应该就是自动配置的数据库方言

关于PageHelper5.1.4插件分页失败的原因之一

结论如下:plugin配置中无需配置Dialect

关于PageHelper5.1.4插件分页失败的原因之一

关于PageHelper5.1.4插件分页失败的原因之一