ibatis 实现分页查询 简单粗暴

sqlMap中要有两个方法:count、pageSelect

     

     
     

Dao层 调用count查询总记录条数。如有其他过滤条件则在page的Filter中添加

public String getCountQuery() {
           return "Cowboys.count";
     }
/**
      * 分页查询记录
      *
      * @param statementName
      * @param pageRequest
      * @return
      */
     protected Page pageQuery(String statementName, PageRequest pageRequest) {
           //符合条件的总记录数
           Number totalCount = (Number) this.getSqlMapClientTemplate().queryForObject(getCountQuery(),
                     pageRequest.getFilters());
           //分页对象
           Page page = new Page(pageRequest, totalCount.intValue());
           // 与getSqlMapClientTemplate().queryForList(statementName,
           // parameterObject)配合使用
           Map otherFilters = new HashMap();
           //页起始记录数
           otherFilters.put("offset", page.getFirstResult());
           //分页大小
           otherFilters.put("pageSize", page.getPageSize());
           //页结束记录数
           otherFilters.put("lastRows", page.getFirstResult() + page.getPageSize());
           //排序信息
           otherFilters.put("sortColumns", pageRequest.getSortColumns());
           // 混合两个filters为一个filters,MapAndObject.get()方法将在两个对象取值,Map如果取值为null,则再在Bean中取值
           Map parameterObject = new MapAndObject(otherFilters, pageRequest.getFilters());
           //分页查询
           List list = getSqlMapClientTemplate().queryForList(statementName, parameterObject, page.getFirstResult(),
                     page.getPageSize());
           page.setResult(list);
           return page;
     }
     /**
      * 根据页面查询条件,取得 WalletMchtInfoReg 表的分页信息.
      * @param pageRequest 页面请求参数
      * @return WalletMchtInfoReg 表的分页信息
      */
     public Page findByPageRequest(PageRequest pageRequest) {
           return pageQuery("Cowboys.pageSelect", pageRequest);
     }
controller层调用 此处可以设置pageSize,pageNum,filter等条件

@GET
     @RequestMapping(value = "/v4", method = RequestMethod.GET)
     public @ResponseBody Page getPage() {
           PageRequest pageRequest = new PageRequest(DEFAULT_SORT_COLUMNS);
           pageRequest.setPageSize(5);
           Page page = cowboysDao.findByPageRequest(pageRequest);
           return page;
     }

你可能感兴趣的:(ibatis)