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/
https://www.coderli.com/mybatis-pagehelper-reentrantlock-bug/https://www.coderli.com/mybatis-pagehelper-reentrantlock-bug/
加入频道领免费Java学习资料:腾讯频道邀请
加入大佬免费带队Java学习群:Java学习群