在service层中, 有一个问题,就是:
dao层中的分页查询传参,传入的是rowIndex(从第几行开始查询), pageSize(查询多少条记录)
而在service层中分页查询传的是pageIndex(第几页),pageSize
所以在第一个参数要有一个转换才可以
所以编写一个工具类,将pageIndex转为rowIndex
PageCalculator
1 /** 2 * 将pageIndex(第几页)转换为查询结果中的第几行rowIndex 3 * 如果pageIndex是1 pageSize是5 那么就是从第0行开始取5条数据 4 * 如果pageIndex是2 pageSize是5 那么就是从第5行开始取5条数据 5 * @param pageIndex 6 * @param pageSize 7 * @return 8 */ 9 public static int calculateRowIndex(int pageIndex,int pageSize) { 10 return (pageIndex > 0)?(pageIndex - 1) * pageSize : 0; 11 }
service接口
1 /** 2 * 实现分页查询店铺,通过条件组合,来筛选出条件范围内的店铺列表 3 * 根据shopCondition分页返回相应店铺列表 4 * 因为需要List 和 count 所以使用ShopExecution类型 5 * @param shopCondition 6 * @param pageIndex 第几页 7 * @param pageSize 一页中数据的数量 8 * @return ShopExecution 9 */ 10 public ShopExecution getShopList(Shop shopCondition,int pageIndex,int pageSize);
serviceImpl
1 @Override 2 public ShopExecution getShopList(Shop shopCondition, int pageIndex, int pageSize) { 3 int rowIndex = PageCalculator.calculateRowIndex(pageIndex, pageSize); 4 List<Shop> shopList = shopDao.queryShopList(shopCondition, rowIndex, pageSize); 5 int count = shopDao.queryShopCount(shopCondition); 6 ShopExecution se = new ShopExecution(); 7 if(shopList != null) { 8 se.setShopList(shopList); 9 se.setCount(count); 10 }else { 11 se.setState(ShopStateEnum.INNER_ERROR.getState()); 12 } 13 return se; 14 }