java 分頁查詢工具類實現

java分頁查詢後臺實現

提到分頁大家定當很熟悉,最近遇到前端框架更換之前的分頁機制已不再適用,最終還是把上一個項目的分頁機制拿過來使用,特在此記錄一下,以免再次遇到此類情況!

後臺代碼實現

controller

@Controller
@RequestMapping("/activity")
public class ActivityController extends BaseController {
    @Autowired
    ActivityService activityService;
	
    /**
    * @Description: 活動管理數據分頁查詢
    * @Author: Mr.Jkx
    * @Date: 2019/4/25 11:52
    * in:pageSize 每頁顯示記錄
    * in: pageIndex 當前頁碼
    */
    @RequestMapping("/selTActivityList")
    @ResponseBody
    public String selTActivityList(TActivity tActivity, HttpServletRequest request){
    	// 分頁參數封裝
        paginationMap = getPaginationMap(request);
        // 搜索數據條件
        paginationMap.put("creater", tActivity.getCreater());
        paginationMap.put("activityType", tActivity.getActivityType());
        paginationMap.put("deptId", tActivity.getDeptId());
        paginationMap.put("activityStatus", tActivity.getActivityStatus());
        TActivity tActivitys = activityService.selTActivityList(paginationMap);
        return JsonUtil.toJsonString(tActivitys);
    }
}

service

@Override
    public TActivity selTActivityList(Map<String, Object> paginationMap) {
        TActivity tActivity = new TActivity();
        // 分頁獲取總條數
        int allCount = tActivityMapper.getAllCount(paginationMap);
        //獲取分頁信息再賦值給參數
        Map<String, Object> pageRec = tActivity.getPageRec(paginationMap);
        paginationMap.putAll(pageRec);
        // 分頁獲取數據
        List<TActivity> tActivityList = tActivityMapper.selTActivityList(paginationMap);
        // 組裝回執數據
        tActivity.setData(tActivityList);
        tActivity.setTotal(allCount);
        tActivity.setMessage("活動管理數據分頁查詢");
        tActivity.setPageStatus(0);
        return tActivity;
    }

mapper

int getAllCount(@Param("paginationMap") Map<String, Object> paginationMap);

List<TActivity> selTActivityList(@Param("paginationMap") Map<String, Object> paginationMap);
<!--查詢數據總條數-->
<select id="getAllCount" resultType="java.lang.Integer" parameterType="java.util.Map">
        select count(1)
        from t_activity a
        left join t_dept d
        on FIND_IN_SET(d.id ,a.dept_id)
        left join t_user u
        on d.creater = u.user_id
        <where>
            <include refid="SelectTActivity_sql"></include>
        </where>
    </select>
    <!-- 分頁數據查詢 -->
<select id="selTActivityList" resultMap="BaseResultMap" parameterType="java.util.Map">
        select
        <include refid="selTActivityOfList"/>
        from t_activity a
        left join t_dept d
        on FIND_IN_SET(d.id ,a.dept_id)
        left join t_user u
        on d.creater = u.user_id
        <where>
            <include refid="SelectTActivity_sql"></include>
        </where>
        limit #{paginationMap.firstRow}, #{paginationMap.pageSize}
    </select>

工具類

公共引用類

public class BaseController {
    /**
     * 分頁全局變量
     */
    public Map<String, Object> paginationMap = new HashMap<String,Object>();

    /**
     *
     * @Title: getPaginationMap
     * @Description: 分頁參數封裝
     * @param req
     * @return
     * @author Zhangzheng
     * createDate: 2015年6月10日 下午4:23:56
     */
    public Map<String,Object> getPaginationMap(HttpServletRequest req){
        // 每次訪問都清空全局變量
        Map<String, Object> paginationMap2 = new HashMap<String,Object>();
        String pageSizes = req.getParameter("pageSize");//獲取每頁顯示記錄
        String pageIndexs =req.getParameter("pageIndex");//獲取當前頁
        int pageSize=10;//初始化每頁顯示記錄
        int pageIndex=1;//初始化當前頁
        if(pageSizes!=null && !pageSizes.equals("")&&!pageSizes.equals("undefined")){
            pageSize=Integer.parseInt(pageSizes);
        }
        if(pageIndexs!=null && !pageIndexs.equals("")&&!pageIndexs.equals("undefined")){
            pageIndex=Integer.parseInt(pageIndexs);
        }
        paginationMap2.put("pageSize", pageSize);
        paginationMap2.put("pageIndex", pageIndex);
        return paginationMap2;
    }
}
public class Page<T> {
    private int page;

    private int pageSize = 10;

    private int total; // 調整前第幾頁/調整後總條數

    private List<T> rows;

    private int pageStatus; // 解析接口狀態

    private String message; // 解析提示文本

    private List<T> data; // 解析數據列表

    private int pageIndex = 1;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public List<T> getRows() {
        return rows;
    }

    public void setRows(List<T> rows) {
        this.rows = rows;
    }

    public int getPageStatus() {
        return pageStatus;
    }

    public void setPageStatus(int pageStatus) {
        this.pageStatus = pageStatus;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<T> getData() {
        return data;
    }

    public void setData(List<T> data) {
        this.data = data;
    }

    /**
     * @Title: getPageRec
     * @Description: 獲取分頁信息
     * @param @param paginationMap
     * @param @return
     * @return Map<String,Object>
     * @throws
     */
    public Map<String, Object> getPageRec(Map<String, Object> paginationMap){
        Map<String, Object>  map = new HashMap<String, Object>();
        this.setPageSize(Integer.parseInt(paginationMap.get("pageSize")+""));
        this.setPageIndex(Integer.parseInt(paginationMap.get("pageIndex")+""));
        map.put("firstRow", this.getFirstRow());
        map.put("endRow", this.getLastRow());
        return map;
    }

    public int getFirstRow() {
        return (pageIndex - 1) * pageSize;
    }
    public void setPageIndex(int pageIndex) {
        this.pageIndex = pageIndex;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getPageSize() {
        return pageSize;
    }
    public int getLastRow() {
        return pageIndex * pageSize;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章