mybatis 分頁外掛pagehelper整合及使用
阿新 • • 發佈:2019-02-06
/** * 獲取任意查詢方法的count總數 * * @param select * @return */ public static long count(ISelect select) { Page<?> page = startPage(1, -1, true); select.doSelect(); return page.getTotal(); } /** * 開始分頁 * * @param pageNum 頁碼 * @param pageSize 每頁顯示數量 */ public static <E> Page<E> startPage(int pageNum, int pageSize) { return startPage(pageNum, pageSize, true); } /** * 開始分頁 * * @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); } /** * 開始分頁 * * @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 offset 頁碼 * @param limit 每頁顯示數量 */ public static <E> Page<E> offsetPage(int offset, int limit) { return offsetPage(offset, limit, true); } /** * 開始分頁 * * @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 = SqlUtil.getLocalPage(); if (oldPage != null && oldPage.isOrderByOnly()) { page.setOrderBy(oldPage.getOrderBy()); } SqlUtil.setLocalPage(page); return page; } /** * 開始分頁 * * @param offset 頁碼 * @param limit 每頁顯示數量 * @param orderBy 排序 */ public static <E> Page<E> offsetPage(int offset, int limit, String orderBy) { Page<E> page = offsetPage(offset, limit); page.setOrderBy(orderBy); return page; } /** * 開始分頁 * * @param pageNum 頁碼 * @param pageSize 每頁顯示數量 * @param count 是否進行count查詢 * @param reasonable 分頁合理化,null時用預設配置 */ public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count, Boolean reasonable) { return startPage(pageNum, pageSize, count, reasonable, null); } /** * 開始分頁 * * @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 = SqlUtil.getLocalPage(); if (oldPage != null && oldPage.isOrderByOnly()) { page.setOrderBy(oldPage.getOrderBy()); } SqlUtil.setLocalPage(page); return page; } /** * 開始分頁 * * @param params */ public static <E> Page<E> startPage(Object params) { Page<E> page = SqlUtil.getPageFromObject(params); //當已經執行過orderBy的時候 Page<E> oldPage = SqlUtil.getLocalPage(); if (oldPage != null && oldPage.isOrderByOnly()) { page.setOrderBy(oldPage.getOrderBy()); } SqlUtil.setLocalPage(page); return page; } /** * 排序 * * @param orderBy */ public static void orderBy(String orderBy) { Page<?> page = SqlUtil.getLocalPage(); if (page != null) { page.setOrderBy(orderBy); } else { page = new Page(); page.setOrderBy(orderBy); page.setOrderByOnly(true); SqlUtil.setLocalPage(page); } } /** * 手動清空分頁資料 */ public static void clearPage(){ SqlUtil.clearLocalPage(); }