Mybatis-PageHelper应该是目前使用比较广泛的一个Mybatis分页插件。我在几个项目里都引入了该插件。今天偶然阅读其源码,却发现了一个不小的问题。
注:我阅读的是最新的4.1.3的源码。
该分页插件的核心是PageHelper类,该类实现了Mybatis提供的Interceptor接口。接口定义的intercept方法实现如下:
/**
* Mybatis拦截器方法
*
* @param invocation 拦截器入参
* @return 返回执行结果
* @throws Throwable 抛出异常
*/
public Object intercept(Invocation invocation) throws Throwable {
if (autoRuntimeDialect) {
SqlUtil sqlUtil = getSqlUtil(invocation);
return sqlUtil.processPage(invocation);
} else {
if (autoDialect) {
initSqlUtil(invocation);
}
return sqlUtil.processPage(invocation);
}
}
全文详见个人独立博客:https://www.coderli.com/mybatis-pagehelper-reentrantlock-bug/
加入频道领免费Java学习资料:腾讯频道邀请
加入大佬免费带队Java学习群:Java学习群