Mybatis实现分页的注意点

作者:袖梨 2022-06-29

前面的话:使用拦截器给Mybatis进行分页的教程在网上有很多,这里记录的主要是我在使用的时候中间走的弯路,记录下来,也好给后面想要学习Mybatis分页拦截的小伙伴们提供点帮助。

1. 拦截器获取参数,判断是否有Page类

1) 使用ThreadLocal 获取

代码如下 复制代码

//获取ThreadLocal

privatestaticThreadLocalpageLocal =newThreadLocal();

privatePage getPage() {

returnpageLocal.get();

}

2) 从boundsql里面获取

代码如下 复制代码

BoundSql boundSql = delegate.getBoundSql();

Object parameterObject = boundSql.getParameterObject();

Page page =this.getPage(parameterObject);

privatePage getPage(Object parameterObject) {

Page page =null;

if(parameterObjectinstanceofPage) {

page = (Page) parameterObject;

}elseif(parameterObjectinstanceofMap) {

for(Object val : ((Map) parameterObject).values()) {

if(valinstanceofPage) {

page = (Page) val;

}

}

}

returnpage;

}

2. 重载plugin方法

代码如下 复制代码

@Override

publicObject plugin(Object target) {

if(targetinstanceofStatementHandler) {

returnPlugin.wrap(target,this);

}else{

returntarget;

}

}

原文链接:http://blog.**c*sdn.net/cubic__/article/details/75353932

相关文章

精彩推荐