package org.hsweb.web.mybatis.plgins.pager; import org.hsweb.web.core.utils.ThreadLocalUtils; /** * 分页插件,通过此接口进行分页操作 * * @author zhouhao * @see PagerInterceptor */ public interface Pager { int pageIndex(); int pageSize(); String threadLocalKey = "nowPager"; static Pager getAndReset() { try { return get(); } finally { reset(); } } static Pager get() { return ThreadLocalUtils.get(threadLocalKey); } static void reset() { ThreadLocalUtils.remove(threadLocalKey); } static void doPaging(int pageIndex, int pageSize) { ThreadLocalUtils.put(threadLocalKey, new Pager() { @Override public int pageIndex() { return pageIndex; } @Override public int pageSize() { return pageSize; } }); } static void doPaging(int pageIndex, int pageSize, int total) { doPaging(pageIndex, pageSize); rePaging(total); } static void rePaging(int total) { Pager pager = get(); int pageIndex = 0; if (pager != null) { // 当前页没有数据后跳转到最后一页 if (pager.pageIndex() != 0 && (pager.pageIndex() * pager.pageSize()) >= total) { int tmp = total / pager.pageSize(); pageIndex = total % pager.pageSize() == 0 ? tmp - 1 : tmp; } doPaging(pageIndex, pager.pageSize()); } } }