本文主要是介绍【菜鸟学Java】3:封装一个分页类PageBean,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景介绍:
在做网上商城的项目时,有一个非常高频的功能需求,那就是做Web前端开发都知道的分页显示数据。当然要实现这个功能方法是非常多的,在我之前的做的项目接口管理系统中,使用的实现方式是假分页的方式,即将所有的数据查询出来,在前端进行分页,这个分页是使用前端框架的表格控件来完成的。因此我们在开发的时候,并没有在分页的实现上下多大的功夫,当然也就谈不上什么抽象和封装之类的编程技巧了。
当然,真分页的方式也实现过,就是在底层封装一些分页查询的方法,将分页信息比如起始页以及每页显示多少条记录等参数信息传入,然后在方法内部使用原生的SQL和传入的参数一起组成SQL语句,执行SQL语句来实现分页。显然这也没有使用面向对象的思想来实现分页功能。
那么如何用面向对象的方式来实现分页的功能呢?请往下看:
正文部分:
首先我们先来封装一个分页实体类PageBean,代码如下:
分页类PageBean
<span style="font-size:18px;">public class PageBean<T> {private int page; //当前页数private int totalCount; //总记录数private int totalPage; //总页数private int limit; //每页显示的记录数private List<T> list; //每页显示数据记录的集合;public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public int getLimit() {return limit;}public void setLimit(int limit) {this.limit = limit;}public List<T> getList() {return list;}public void setList(List<T> list) {this.list = list;}}</span>
那么如何使用封装好的分页类呢?接着往下看:
Action类业务方法
<span style="font-size:18px;">//根据分类的ID查询商品public String findByCid(){PageBean<Product> pageBean=productService.findByPageCid(cid,page);//根据一级分类查询带分页的商品//将PageBean存入到值栈中ActionContext.getContext().getValueStack().set("pageBean", pageBean);return "findByCid";}</span>
Service类业务方法
<span style="font-size:18px;">//根据一级分类的cid带分页的查询商品public PageBean<Product> findByPageCid(Integer cid, int page) {PageBean<Product> pageBean= new PageBean<Product>();//设置当前页数pageBean.setPage(page);//设置每页显示的记录数int limit =8;pageBean.setLimit(limit);//设置总记录数int totalCount=0;totalCount = productDao.findCountCid(cid);pageBean.setTotalCount(totalCount);//设置总页数int totalPage=0;if(totalCount % limit ==0){totalPage=totalCount/limit;}else {totalPage= totalCount/limit +1;}pageBean.setTotalPage(totalPage);//每页显示的数据集合//从哪开始int begin=(page-1)*limit;List<Product> list=productDao.findByPageCid(cid,begin,limit);pageBean.setList(list);return pageBean;}</span>
Dao类业务方法
<span style="font-size:18px;">public List<Product> findByPageCid(Integer cid, int begin, int limit) {String hql="select p from Product p join p.categorySecond cs join cs.category c where c.cid=?";//分页的另一种方法List<Product> list=this.getHibernateTemplate().execute(new PageHibernateCallback<Product>(hql, new Object[]{cid}, begin, limit));if(list!=null && list.size()>0){return list;}return null;}</span>
小结一下:
其实在之前做的项目中根本没有想到过使用类去对分页进行封装,在遇到分页的功能需求时,总是想着底层分页方法的编写和客户端分页如何实现,亦或是借助前端分页控件实现,将面向对象的编程思想跑到了九霄云外,可能是对面向对象的理解还不够深刻,因此根本没有那个想法,不怕不知道,就怕不知道,就是这个道理。
这篇关于【菜鸟学Java】3:封装一个分页类PageBean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!