目录
- 商品列表显示业务逻辑分析
- 分页的的封装思路
- 分页的处理
商品列表显示业务逻辑分析
核心逻辑
/* * 显示商品list逻辑: * 第一步:获取请求页码。如果第一次请求,默认页码是1。 * 第二步:根据页码获取相应商品List和商品总条数。 * 第三步:根据商品id获取商家bean。 * 第四步:根据当前页码、商品List、商品总条数、每页条数(全局参数)封装PagerBean(注意,该bean包括所有需要的信息,包括List,页码各种信息等). * 我们需要回传的数据:只有一个Pager */
分页的的封装思路
Pager.java
public class Pager<T> { public int perSize = ParamUtils.PERPAGE;// 每页条数 private int nowPager; // 当前页 private int totalPageNum; // 总页数 private int totalRecordNum; // 总条数 private List<T> objects; // 获取的信息列表 //Getter、Setter... }
将Pager定义成一个泛型Pager主要是为了变量List考虑,因为List可能是各种物品的List,比如商品、商家、客户等。
- 其它信息不再说明,全部都有注释。
- 这样封装,我们可以保证所有我们需要的俺叔全部在这个“Pager”里面,我们向页面返回数据时,只要返回一个Pager即可。
- 注意,我们可能需要的一些参数不再List这个“T”里面,这是一个bean,我们可以在该bean中添加需要的成员变量即可。保证返回数据的“高聚性”。
分页的处理
我们首先创建一个特别特别简单的页面处理工具类,看似简单,却使分页处理简单许多
public class PageUtils { /** * @param pager * 当前页 。返回limit m,n 的第一个参数 */ public static int getParam1(int pager) { int param1 = (pager - 1) * ParamUtils.PERPAGE; return param1; } /** * @param totalRecordNum * 信息总条数 。返回 总页数 */ public static int getPagersByNums(int totalRecordNum) { int totalPageNum = (totalRecordNum + ParamUtils.PERPAGE - 1) / ParamUtils.PERPAGE; return totalPageNum; } }
核心部分非常简单
public Pager<Goods> getGoodsPager(int page) { IGoodsDao goodsDao = new GoodsDao(); Pager<Goods> p=new Pager<Goods>(); List<Goods> goodsList=goodsDao.getGoodsList(page);//过去List参数 int count =goodsDao.getGoodsCount();//获取总条数 p.setNowPager(page);//设置当前页 p.setPerSize(ParamUtils.PERPAGE);//设置每页大小 p.setTotalRecordNum(count);//设置总条数 p.setTotalPageNum(PageUtils.getPagersByNums(count));//设置总页数 p.setObjects(goodsList);//封装信息list return p; }