Mysql数据库实现商品分页


前言

商品分页,是每一个系统都必须实现的,Mysql数据库实现分页相对来说比较简单。
话不多说,直接看效果图
在这里插入图片描述

一、封装一个页面类PageBean


import java.util.List;

public class PageBean<T> {
	private int pageNow;//当前页面
	private int counts;//数据库中的记录条数
	private int pageSize;//一个页面显示的数据量 
	//private int pages;//页面总数量
	private List<T> beanList;//将数据库查询的结果添加到beanList集合中
	
	public int getPageNow() {
		return pageNow;
	}
	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}
	public int getCounts() {
		return counts;
	}
	public void setCounts(int counts) {
		this.counts = counts;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getPages() { 
		
		int pages = this.counts / this.pageSize;//记录条数/一个页面显示的数据条数
		return this.counts % this.pageSize == 0 ? pages : pages + 1;
	}
	
	public List<T> getBeanList() {
		return beanList;
	}
	public void setBeanList(List<T> beanList) {
		this.beanList = beanList;
	}
	
	
	

}

二、在数据库操作类dao中创建分页查询方法

public PageBean showFenleiBypage(int pageNow, int pageSize) throws SQLException {
		PageBean pb = new PageBean();
		pb.setPageNow(pageNow);
		pb.setPageSize(pageSize);
		pb.setCounts(this.getCounts());
		List list = new ArrayList();
		QueryRunner queryRunner = new QueryRunner(PropertiesUtils.getDataSource());
		String sql = "select * from students limit ? , ?";
		 list = queryRunner.query(sql, new BeanListHandler<>(Student.class),(pageNow - 1) * pageSize,pageSize);
		pb.setBeanList(list);
		return pb;
	}

三、在servlet中调用showFenleiBypage(pageNow,pageSize)请求数据,并将请求的数据响应到页面。

@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String method = request.getParameter("method");
		if("list".equals(method)) {
			this.list(request,response);
		}else if("add".equals(method)){
			this.add(request, response);
		}else if("edit".equals(method)) {
			this.findById(request, response);
		}else if("editsubmit".equals(method)) {
			this.editsubmit(request, response);
		}else if("delate".equals(method)) {
			this.delete(request, response);
		}else if("listfenye".equals(method)) {
			int pageNow = this.getPageNow(request);
			int pageSize = 10;
			PageBean pb;
			try {
				pb = DaoFactory.getInstance().getStudentDao().showFenleiBypage(pageNow,pageSize);
				request.setAttribute("pb", pb);
				request.getRequestDispatcher("page/student/list.jsp").forward(request, response);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			}
			
		}

public int getPageNow(HttpServletRequest req) {
		String pageNow = req.getParameter("pageNow");
		if(pageNow == null || pageNow.trim().isEmpty()) {
			return 1;
		}
		return Integer.parseInt(pageNow);
		
	}

四、在页面中实现分页栏。

<table class="page">
				<td>
					<button>第${pb.pageNow }/共${pb.pages }</button>
					&nbsp;&nbsp;&nbsp;&nbsp;
					<button><a href = "<%=basePath%>student?method=listfenye&pageNow=1">首页</a></button>
					<c:if test="${pb.pageNow > 1 }">
					<button><a href = "<%=basePath%>student?method=listfenye&pageNow=${pb.pageNow - 1}">上一页</a></button>
					</c:if>
					<c:choose>
					<c:when test = "${pb.pages <= 10 }">
					<c:set var = "begin" value ="1"></c:set> 
					<c:set var = "end" value ="${pb.pages }"></c:set> 
					</c:when>
					<c:otherwise>
					<c:set var = "begin" value ="${pb.pageNow - 5 }"></c:set> 
					<c:set var = "end" value ="${pb.pageNow + 4 }"></c:set> 
					<c:if test = "${begin <= 1 }">
					<c:set var = "begin" value ="1"></c:set> 
					<c:set var = "end" value ="10"></c:set> 
					</c:if>
					<c:if test = "${end >= pb.pages }">
					<c:set var = "begin" value ="${pb.pages - 9 }"></c:set> 
					<c:set var = "end" value ="${pb.pages }"></c:set> 
					</c:if>
					
					</c:otherwise>
					 </c:choose>
					<c:forEach begin = "${begin }" end = "${end}" var = "i">
					<c:choose>
					
					<c:when test = "${pb.pageNow == i }">
					[${i }]
					 </c:when>
					 <c:otherwise>
					 <a href = "<%=basePath%>student?method=listfenye&pageNow=${i}">[${i }]</a>
					 </c:otherwise>
					</c:choose>
					
					</c:forEach>
					<c:if test="${pb.pageNow < pb.pages }">
					<button><a href = "<%=basePath%>student?method=listfenye&pageNow=${pb.pageNow + 1}">下一页</a></button>
					</c:if>
					<button><a href = "<%=basePath%>student?method=listfenye&pageNow=${pb.pages}">尾页</a></button>
					<input type="text" class="page-no" name="pageNo" />
					
				</td>
			</table>

跳转代码

<script type="text/javascript">
	function _go() {
		var pc = $("#pageCode").val();//获取文本框中的当前页码
		if(!/^[1-9]\d*$/.test(pc)) {//对当前页码进行整数校验
			alert('请输入正确的页码!');
			return;
		}
		if(pc > ${pb.pages}) {//判断当前页码是否大于最大页
			alert('请输入正确的页码!');
			return;
		}
		window.location.href="student?method=listfenye&pageNow=" + pc;
	}
</script>
<span></span>
                     <input type="text" class="inputPageCode" id="pageCode" value="${pb.pageNow}" style="width: 20px"/>
                     <span></span>
                   <a href="javascript:_go();" class="aSubmit">确定</a>

总结


以上就是今天要讲的内容,本文讲解了Mysql数据库的分页方法,有不懂的欢迎提问。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值