欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis实现分页的注意点

程序员文章站 2022-10-13 09:51:58
前面的话:使用拦截器给mybatis进行分页的教程在网上有很多,这里记录的主要是我在使用的时候中间走的弯路,记录下来,也好给后面想要学习mybatis分页拦截的小伙伴们提供...

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

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

1) 使用threadlocal 获取

//获取threadlocal
private static threadlocal<page> pagelocal = new threadlocal<page>();
private page getpage() {
  return pagelocal.get();
}

2) 从boundsql里面获取

boundsql boundsql = delegate.getboundsql();
object parameterobject = boundsql.getparameterobject();
page page = this.getpage(parameterobject);
private page getpage(object parameterobject) {
    page page = null;
    if (parameterobject instanceof page) {
      page = (page) parameterobject;
    } else if (parameterobject instanceof map) {
      for (object val : ((map<?, ?>) parameterobject).values()) {
        if (val instanceof page) {
          page = (page) val;
        }
      }
    }
    return page;
  }

2. 重载plugin方法

@override
public object plugin(object target) {
  if (target instanceof statementhandler) {
    return plugin.wrap(target, this);
  } else {
    return target;
  }
}

总结

以上所述是小编给大家介绍的mybatis实现分页的注意点,希望对大家有所帮助