SSM框架下的分页查询显示

本次实例使用的是SSM框架,但是分页的原理都是一样的,所以便以这个框架下的分页方法为例。

首先:
分页查询时,在数据库(MySQL)中需要使用limit ?,?进行分页,2个参数分别为当前页码数,当前页面显示的条数,除此之外,我们还需要知道总记录数。

UserMapper.xml

<!--查询所有用户(分页)-->
  <select id="findByPage" parameterType="java.util.Map" resultType="java.util.Map">
    SELECT
    <include refid="Base_Column_List"/>
    from user 
    <if test="pageIndex >= 0 and pageSize > 0">
      limit #{pageIndex},#{pageSize}
    </if>
  </select>
<!--取得记录总数-->
  <select id="getCount" parameterType="java.util.Map" resultType="java.lang.Integer">
    SELECT
    count(1) as count
      from user 
  </select>

接下来编写dao层的接口

因为传入的参数里包含当前页码数和当前页面显示条数两个参数,所以这里使用map来存放。

UserDao.java

    //分页查询所有数据
    List<Map<String,Object>> findByPage(Map<String,Object> map);
    //获得所有记录数
    int getCount(Map<String,Object> map);

Service层的接口以及他的实现类ServiceImpl

在service层的时候在一个实现方法里面调用dao层的两个方法。

UserService.java

    //分页查询
    PageInfo<List<Map<String,Object>>> findByPage(Map<String,Object> params);

UserServiceImpl.java

    @Override
    public PageInfo<List<Map<String,Object>>> findByPage(Map<String, Object> params) {
        PageInfo pageInfo = new PageInfo<>();
        pageInfo.setPageSize((Integer)params.get("pageSize"));
        //获取总记录数
        pageInfo.setTotalCount(userMapper.getCount(params));          pageInfo.setPageCount(pageInfo.getPageCount(pageInfo.getTotalCount(),pageInfo.getPageSize()));
        pageInfo.setPageIndex((int)params.get("pageIndex"));
        params.put("pageInfo",pageInfo);
        //获取查询到的结果集
        List<Map<String,Object>> list = userMapper.findByPage(params);
        if(list.size()>0){
            pageInfo.setResults(list);
        }else{
            pageInfo.setResults(null);
        }
        return pageInfo;
    }

Controller层的实现

这里的Controller继承了BaseController里面的方法,

BaseController.java

@RequestMapping(value = "list",method = RequestMethod.GET, produces = "application/json; charset=utf-8")
    @ResponseBody
    public String list(T params,HttpServletRequest request,HttpServletResponse response) {

        String json="";
        String temp1 = request.getParameter("pageIndex");
        String temp2 = request.getParameter("pageSize");
        try {
            int pageSize = temp2 == null ? ConstantParams.PAGE_SIZE : Integer.parseInt(temp2);
            int pageIndex = temp1 == null ? (ConstantParams.PAGE_INDEX - 1) * pageSize : (Integer.parseInt(temp1) - 1) * pageSize;
            PageInfo<E> page = findPage(params,pageSize,pageIndex,request);
            ObjectMapper mapper = new ObjectMapper();
            json = mapper.writeValueAsString(page);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return json;
    }



    //查询分页
    PageInfo<List<Map<String,Object>>> findByPage(Map<String,Object> params);

UserController.java

 @Override
    protected PageInfo<List<Map<String,Object>>> findPage(User user, int pageSize, int pageIndex,HttpServletRequest request) {
        Map<String,Object> map = BeanConvertUtils.beanConvertMap(user);
        map.put("pageIndex",pageIndex);
        map.put("pageSize",pageSize);
        PageInfo<List<Map<String,Object>>> pageInfo = userService.findByPage(map);
        return pageInfo;
    }

以上就是分页查询的完整后台代码,至于前台的分页按钮,网上有较多现成的代码,这里就不做展示了。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值