分页查询的工具类
package util; public class Pagination { private int ye; private int maxYe; private int beginYe; private int endYe; private int begin; public Pagination(int ye, int count, int numInPage, int numOfPage) { if (count != 0) { this.ye = ye; if (this.ye <= 1) { this.ye = 1; } maxYe = count % numInPage == 0 ? count / numInPage : count / numInPage + 1; if (this.ye >= maxYe) { this.ye = maxYe; } beginYe = this.ye - numOfPage / 2; if (beginYe <= 1) { beginYe = 1; } endYe = beginYe + numOfPage - 1; if (endYe >= maxYe) { endYe = maxYe; beginYe = endYe - numOfPage + 1; } if (beginYe <= 1) { beginYe = 1; } begin = (this.ye - 1) * numInPage; } } public int getBegin() { return begin; } public int getYe() { return ye; } public int getMaxYe() { return maxYe; } public int getBeginYe() { return beginYe; } public int getEndYe() { return endYe; } }
controller层
@RequestMapping("selectletter.do") @ResponseBody public Map<String, List<PM00004>> selectletter(@RequestParam(value = "ID40001") String ID40001, @RequestParam(value = "ID10001") String ID10001, @RequestParam(value = "NA50001") String NA50001, @RequestParam(value = "NA50002") String NA50002, @RequestParam(value = "date1") String date1, @RequestParam(value = "date2") String date2, @RequestParam(value = "page") String page) { /* 分页插件 */ Integer page1 = Integer.parseInt(page); int i = 1; if (ID40001 == null) { i = 0; } /* 查询分页数据 */ int count = produceService.searchCount(ID40001, ID10001, NA50001, NA50002, date1, date2); Pagination p = new Pagination(page1, count, constants.EMP_NUM_IN_PAGE, constants.EMP_NUM_OF_PAGE); //(ye-1)*Constant.EMP_NUM_IN_PAGE+1和ye*Constant.EMP_NUM_IN_PAGE分别是区间查询的开始位置和结束位置 List<PM00004> list1 = produceService.selectletter(ID40001, ID10001, NA50001, NA50002, date1, date2, page1 * 2 - 1, page1 * 2); //map规定只能放list集合 List list2 = new ArrayList<>(); list2.add(p); List list3 = new ArrayList<>(); list3.add(i); Map<String, List<PM00004>> map = new HashMap<String, List<PM00004>>(); map.put("flag", list1); map.put("flag2", list2); map.put("flag3", list3); return map; }
后面的都差不多就不写了,主要是前端
图片上的是普通遍历,a标签携带数据跳转方法,去后台查询以下是ajax遍历分页,每次onclick走的是ajax的方法
$.ajax({ url:"selectletter.do", type:"post", data:{"ID40001":a,"ID10001":b,"NA50001":c,"NA50002":d,"date1":e,"date2":f,"page":page}, dataType:"json", success:function(data){ //onclick携带数据(页数)是走的ajax方法,不刷新页面 /* 分页查询 */ var pagingHtmlStr = "<ul class='pagination'>"+ "<li id='pre' ><a href='javascript:void(0);' 'selectLetter("+data.flag2[0].ye+"-1)'>«</a></li>"; for(var s=1;s<=data.flag2[0].endYe;s++){ pagingHtmlStr = pagingHtmlStr + "<li ><a href='javascript:void(0);' 'selectLetter("+s+")'>"+s+"</a></li>" } pagingHtmlStr = pagingHtmlStr + "<li id='next'><a href='javascript:void(0);' 'selectLetter("+data.flag2[0].ye+"+1)'>»</a></li>"+ "</ul>"; /* 去重 */ $("#paging").empty(); 拼接在body里 $("#paging").append(pagingHtmlStr); } });
sql语句
select ID81001,NA81003,NA81001,SU30001,KB10001 from(select ID81001,NA81003,NA81001,SU30001,KB10001,rownum AS RQ from MATERIEL)where RQ between #{begin} and #{end}
效果图

文章来源: https://blog.csdn.net/weixin_43478296/article/details/88868321