阅读 29

pagehelper分页原理快不,pagehelper内存分页

这里有新发现:

手动添加寻呼数据: page helper.start page (contentinfo.get pagenum )、contentInfo.getPageSize ) ); 不管是什么语言,我都在参加寻呼。

通过分页重写SQL语句是在PageInterceptor.class中进行的。 如下图所示,电源关闭时,可能会记录寻呼信息,需要再次结束登录。

实际上,当您查看源代码时,您会发现分页信息最终被设置为本地线程。 也就是说,只有被请求后立即保存分页的pageSize、PageNum。

源代码如下所示。

/**theMITlicense(MIT ) *copyright ) c ) 2014-2017 Abel 533 @ Gmail.com * * permissionisherebygranted, free of charge toanypersonobtainingacopy * ofthissoftwareandassociateddocumentationfiles (the ' software )、 to deal * inthesoftwarewithout includingwithoutlimitationtherights * to use,copy,modify,merge,publish,distribute,suble 与/或sell * copie er andtopermitpersonstowhomthesoftwareis * furnishedtodoso、 subjecttothefollowingconditions 3360 * * theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin * allcopiesorsubstantion thesoftwareisprovided'asis ',WITHOUT WARRANTY OF ANY KIND,expressor * imp less includingbutnotlimitedtothewarrantiesofmerchantied * fitnessforaparticularpurposeandnoninfringement.innoeventshallthe * authorsorcopyrightholdersbeliableforanyclaim,damages on WHETHER IN AN ACTION OF CONTRACT,TORT OR OTHERWISE,ARISING FROM,* outoforinconnectionwiththesoftwareortheuseorotherdealingsin *。 import com.github.page helper.I select; import com.github.page helper.page; import com.github.page helper.util.pageobjectutil; import java.util.Properties; /** *基本分页方法* * @ authorliuzh */publicabstractclasspagemethod { protectedstaticfinalthreadlocalpagelocal _ page=new /***Page参数* * @ param page */protectedstaticvoidsetlocalpage (page ) { local _ page.set } page ); }/***page参数* * @ return */publicstatictpagetgetlocalpage () { return LOCAL_PAGE.get; } /** *局部变量*/publicstaticvoidclearpage ({ local _ page.remove ); } /** *获取任何查询方法的count总数* * @ param select * @ return */publicstaticlongcount (is elec )

t select) { Page<?> page = startPage(1, -1, true); select.doSelect(); return page.getTotal(); } /** * 开始分页 * * @param params */ public static <E> Page<E> startPage(Object params) { Page<E> page = PageObjectUtil.getPageFromObject(params, true); //当已经执行过orderBy的时候 Page<E> oldPage = getLocalPage(); if (oldPage != null && oldPage.isOrderByOnly()) { page.setOrderBy(oldPage.getOrderBy()); } setLocalPage(page); return page; } /** * 开始分页 * * @param pageNum 页码 * @param pageSize 每页显示数量 */ public static <E> Page<E> startPage(int pageNum, int pageSize) { return startPage(pageNum, pageSize, DEFAULT_COUNT); } /** * 开始分页 * * @param pageNum 页码 * @param pageSize 每页显示数量 * @param count 是否进行count查询 */ public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count) { return startPage(pageNum, pageSize, count, null, null); } /** * 开始分页 * * @param pageNum 页码 * @param pageSize 每页显示数量 * @param orderBy 排序 */ public static <E> Page<E> startPage(int pageNum, int pageSize, String orderBy) { Page<E> page = startPage(pageNum, pageSize); page.setOrderBy(orderBy); return page; } /** * 开始分页 * * @param pageNum 页码 * @param pageSize 每页显示数量 * @param count 是否进行count查询 * @param reasonable 分页合理化,null时用默认配置 * @param pageSizeZero true且pageSize=0时返回全部结果,false时分页,null时用默认配置 */ public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero) { Page<E> page = new Page<E>(pageNum, pageSize, count); page.setReasonable(reasonable); page.setPageSizeZero(pageSizeZero); //当已经执行过orderBy的时候 Page<E> oldPage = getLocalPage(); if (oldPage != null && oldPage.isOrderByOnly()) { page.setOrderBy(oldPage.getOrderBy()); } setLocalPage(page); return page; } /** * 开始分页 * * @param offset 起始位置,偏移位置 * @param limit 每页显示数量 */ public static <E> Page<E> offsetPage(int offset, int limit) { return offsetPage(offset, limit, DEFAULT_COUNT); } /** * 开始分页 * * @param offset 起始位置,偏移位置 * @param limit 每页显示数量 * @param count 是否进行count查询 */ public static <E> Page<E> offsetPage(int offset, int limit, boolean count) { Page<E> page = new Page<E>(new int[]{offset, limit}, count); //当已经执行过orderBy的时候 Page<E> oldPage = getLocalPage(); if (oldPage != null && oldPage.isOrderByOnly()) { page.setOrderBy(oldPage.getOrderBy()); } setLocalPage(page); return page; } /** * 排序 * * @param orderBy */ public static void orderBy(String orderBy) { Page<?> page = getLocalPage(); if (page != null) { page.setOrderBy(orderBy); } else { page = new Page(); page.setOrderBy(orderBy); page.setOrderByOnly(true); setLocalPage(page); } } /** * 设置参数 * * @param properties 插件属性 */ protected static void setStaticProperties(Properties properties){ //defaultCount,这是一个全局生效的参数,多数据源时也是统一的行为 if(properties != null){ DEFAULT_COUNT = Boolean.valueOf(properties.getProperty("defaultCount", "true")); } }}

分页信息存储在ThreadLocal,截图如下:

注意这个ThreadLocal,分页时使用的类需要和返回的类一致。

参考:https://www.cnblogs.com/zx947240023/p/8150923.html


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐