技术开发 频道

通用分页实现及其OO设计探讨


    五、应用通用分页框架
    1.继承AbstractViewPage类,实现queryPageList(int startRow, int endRow)和
    queryTotalRows()方法。

    protected int queryTotalRows() throws Exception
   获得查询条件的总记录数

    protected List queryPageList(int startRow, int rowCount)
    用于查询指定范围的数据。startRow为开始记录号, rowCount为查询的记录数

    queryPageList(0,20)为查询从第一条开始的20条记录。

   使用Ibatis可以由queryPageList调用queryForList()方法。

/** * 用户信息分页内部类 * @author yuanguangdong * date: Oct 22, 2006 */ class UserInfoPage extends AbstractViewPage{ //------------------------------------------------ //实现AbstractViewPage抽象类的抽象方法 //------------------------------------------------ /** * @see com.prs.application.ehld.web.mvc.AbstractViewPage#getPageDate(int, int) */ protected List queryPageList(int startRow, int endRow) throws Exception { return sampleAction.getUserInfoList(startRow, endRow); } /** * @see com.prs.application.ehld.web.mvc.AbstractViewPage#getRows() */ protected int queryTotalRows() throws Exception { return sampleAction.getUserCount(); } } 3. 在Contrller中的实现 public ModelAndView listUser(HttpServletRequest request, HttpServletResponse response) throws Exception { String pageAction = RequestUtils.getStringParameter(request,ViewPageHelper.PAGE_ACTION); Integer pageIndex = RequestUtils.getIntParameter(request,ViewPageHelper.PAGE_NO); //声明分页对象 ViewPage userPage = (ViewPage) request.getSession().getAttribute(ViewPageHelper.SESSION_PAGE); //第一次请求 if(pageAction == null || userPage == null){ //构建一个新的分页对象 userPage = new UserInfoPage(); //设置分页大小 userPage.setPageSize(2); }else{ if(ViewPageHelper.SPECIAL_PAGE.equals(pageAction)){ //如果页数为空,则默认为1 if (pageIndex == null) pageIndex = new Integer(1); ViewPageHelper.doAction(userPage,pageAction,pageIndex.intValue()); }else{ ViewPageHelper.doAction(userPage,pageAction); } } //从分页对象中获得当前页数据 List userInfoList = userPage.getPageData(); ModelAndView mav = new ModelAndView(userInfoListView); mav.addObject(this.userInfoListKey,userInfoList); request.getSession().setAttribute(ViewPageHelper.SESSION_PAGE,userPage); return mav; }
0
相关文章