自己封装了分页类的内容,方便以后留着使用
package com.chen.util;
import org.springframework.stereotype.Component;
import java.util.regex.Pattern;
/**
* 分页的类中的样式使用的是bootstrap的样式进行编写的,如果觉得不好就要源码中修改样式
* 使用分页需要传递几个参数
* 1.当前页数(在action中进行截取参数pageCount然后set到此类中的pageCount中)
* 2.每页数据个数(在action中进行截取参数pageSize然后set到此类中的pageSize中)
* 3.总数据数(使用查询所有数据的方法将返回的条数set到zongCount中)
* 4.设置访问的链接(使用set方法对点击按钮访问的链接进行设置)
* 5.最后将pageUtil类传到页面,在需要分页的页面中使用el表达式将类中的button属性取出即可
*/
@Component
public class PageUtil {
private Integer pageCount;//当前页数(需要使用set方法设置)
private Integer pageSize;//每页数据个数(需要使用set方法设置,放入sql中)
private Integer firstCount;//每页从哪开始(计算出来的属性,放入sql中)
private Integer zongCount;//总数据的数(需要使用set方法设置)
private String button;//返回给页面的按钮组(自动拼接出来不需要处理)
private String url;//设置访问的链接(需要使用set方法设置)
public Integer getFirstCount() {
return firstCount=(this.getPageCount()-1)*this.getPageSize();
}
public void setFirstCount(Integer firstCount) {
this.firstCount = firstCount;
}
/*
* 对分页按钮进行封装,使用字符串进行拼接
* */
public String getButton() {
StringBuffer sb=new StringBuffer();
sb.append(" <div class=\"btn btn-group\">");
//判断是否显示上一页(如果当前页数大于0,说明当前不在第一页就是应该显示上一页)
if(pageCount-1>0) {
sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount=" + (pageCount - 1) + "&pageSize="+pageSize+"\">上一页</a>");
}
int shu=0;
//如果到了最后四个选项的时候,就一直显示最后是个选项了(7,8,9,10.....7,8,9,10.....7,8,9,10)
//如果想每页显示五个按钮就-4 想每页显示4个按钮就-3 以此类推
if(pageCount>=(zongCount/pageSize-4) && (zongCount/pageSize-4)>0){
for(int i=(zongCount/pageSize-4) ;i<=zongCount/pageSize;i++){
shu++;
//设置每页显示5个按钮(想每页显示5个按钮就小于6 else中的同理)
if(shu<6){
sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页</a>");
}else{
shu=0;
break;
}
}
}else {
System.out.println(zongCount%pageSize);
//如果计算出来的页数小于5,也就是说按钮个数小于等于5个,那就要从1开始计算按钮了
if((zongCount/pageSize-4)>0){
//正常显示选项(1,2,3,4.....2,3,4,5.....3,4,5,6)
if(zongCount%pageSize<=0){
//是整数
for(int i=pageCount ;i<=zongCount/pageSize;i++){
shu++;
//设置每页显示5个按钮
if(shu<6){
sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页</a>");
}else{
shu=0;
break;
}
}
}else{
//不是整数说明还有下一页
for(int i=pageCount ;i<=zongCount/pageSize+1;i++){
shu++;
//设置每页显示5个按钮
if(shu<6){
sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页</a>");
}else{
shu=0;
break;
}
}
}
}else{
if(zongCount%pageSize<=0) {
for (int i = 1; i <= zongCount / pageSize; i++) {
shu++;
//设置每页显示5个按钮
if (shu < 6) {
sb.append("<a class=\"btn btn-primary\" href=\"/" + url + "?pageCount=" + i + "&pageSize=" + pageSize + "\">第" + i + "页</a>");
} else {
shu = 0;
break;
}
}
}else{
for (int i = 1; i <= zongCount / pageSize+1; i++) {
shu++;
//设置每页显示5个按钮
if (shu < 6) {
sb.append("<a class=\"btn btn-primary\" href=\"/" + url + "?pageCount=" + i + "&pageSize=" + pageSize + "\">第" + i + "页</a>");
} else {
shu = 0;
break;
}
}
}
}
}
//判断是否显示下一页(如果当前页数小于了总页数就不显示下一页)
if(pageCount<zongCount/pageSize || pageCount*pageSize<zongCount) {
sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount=" + (pageCount + 1) + "&pageSize="+pageSize+"\">下一页</a>");
}
sb.append("</div>");
//对设置每页条数的输入框进行拼接
sb.append("<div class='form form-horizontal'>" +
"<div class='form-group col-sm-12 text-right'>" +
"<lable class='text-right col-sm-1'>每页:</lable><div class='col-sm-3'><input id='pageSize' class='form-control' type='number' name='pageSize' value='"+pageSize+"' /></div>" +
"<div class=' col-sm-2'><input type='button' class='btn btn-info' onclick='queding()' value='确定' /></div>" );
if(zongCount%pageSize<=0) {
sb.append(" <lable class='text-left col-sm-2'>当前:" + pageCount + "/" + zongCount / pageSize + "</lable>" );
}else{
sb.append(" <lable class='text-left col-sm-2'>当前:" + pageCount + "/" + (zongCount / pageSize)+1 + "</lable>" );
}
sb.append(" </div></div>" +
"<script type='text/javaScript'>" +
"function queding(){" +
" var size=document.getElementById('pageSize').value;" +
" if(size==''){ " +
" size=0; " +
" }" +
" if(parseInt(size)<=0){ " +
" alert('请选择大于0的数'); " +
" }else{" +
" window.location.href='/"+url+"?pageSize='+size+'' " +
" } " +
"}" +
"</script>");
button=sb.toString();
return button;
}
public void setButton(String button) {
this.button = button;
}
public Integer getZongCount() {
return zongCount;
}
public void setZongCount(Integer zongCount) {
this.zongCount = zongCount;
}
public Integer getPageCount() {
if(pageCount==null){
//初始状态页是第一页
pageCount=1;
}
return pageCount;
}
public void setPageCount(Integer pageCount) {
this.pageCount = pageCount;
}
public Integer getPageSize() {
if(pageSize==null){
//如果没有设置每页显示多少个的话就默认是5
pageSize=5;
}
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getUrl() {
return url;
}
/**
* 判断是否为整数
* @param str
* @return
*/
public static boolean isInteger(Integer str) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str.toString()).matches();
}
public void setUrl(String url) {
this.url = url;
}
}
使用方法直接在service中的内容,service中的两个参数是从controller中接收后传递到service中的
@Service
public class WorkServiceImpl implements WorkService {
@Resource
private PageUtil pageUtil;
@Resource
private KaoqinMapper kaoqinMapper;
public List<Kaoqin> queryPage(Integer pageCount, Integer pageSize) {
pageUtil.setPageCount(pageCount);//设置分页当前页数
pageUtil.setPageSize(pageSize);//设置分页的每页条数
pageUtil.setUrl("work/query.do");//设置点击按钮访问的链接
List<Kaoqin> listCount=kaoqinMapper.queryAll();
pageUtil.setZongCount(listCount.size());//设置所有数据的条数
List<Kaoqin> list = kaoqinMapper.queryKaoqin(pageUtil);
return list;
}
}