您的位置:首页 > 编程语言 > Java开发

ibatis 实现分页查询 简单粗暴

2017-08-29 14:28 309 查看
sqlMap中要有两个方法:count、pageSelect

<!-- 查询记录数 根据特定条件 -->
     <select id="count" resultClass="long">
        <![CDATA[
        select count(*) from t_dat_dict
    ]]>
     </select>

     <!-- 分页查询已经使用Dialect进行分页,也可以不使用Dialect直接编写分页 因为分页查询将传 #offset#,#pageSize#,#lastRows#
           三个参数,不同的数据库可以根于此三个参数属性应用不同的分页实现 -->
     <select id="pageSelect" resultMap="cowboysResultMap">
           select
           <include refid="commonColumns" />
        <![CDATA[
             from t_dat_dict
         ]]>
           <dynamic prepend="ORDER BY">
                <isNotEmpty property="sortColumns">$sortColumns$</isNotEmpty>
           </dynamic>
     </select>

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<Map> pageRequest = new PageRequest(DEFAULT_SORT_COLUMNS);
           pageRequest.setPageSize(5);
           Page page = cowboysDao.findByPageRequest(pageRequest);
           return page;
     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ibatis java