分页查询的工具类
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}
效果图