Spring包下Pageable的使用 2

在使用Jhipster想实现用Pageable作为分页参数并返回Page对象时,需要注意的点是,这里page的值要从0开始

/api/company-users/withDelFlag?page=0&size=20

@GetMapping("/company-users/withDelFlag")
    public ResponseEntity<List<CompanyUser>> getAllCompanyUsersWithDelFlag(Pageable pageable) {
        log.debug("REST request to getAllCompanyUsersWithDelFlag");
        
        List<CompanyUser> all = companyUserService.findAllWithDelFlag(pageable);
        //封装Page对象
        Page page = new PageImpl(all,pageable,all.size());
		//构建HttpHeader
        HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), page);
        return ResponseEntity.ok().headers(headers).body(page.getContent());
    }

因为在构建Page对象时所用的实现类PageImpl构建total的值和构建HTTPHeader的值是相关的,
在这里插入图片描述
Header里记录了所查记录的总数
在这里插入图片描述
在这里插入图片描述
分页要求的三个参数都齐备的时候才能进行良好的分页,页码(page),每页条数(size),总条数(X-Total-Count)

然后是Limit分页

public List<CompanyUser> findCompanyUserAllWithDelFlagIsFalse(Pageable pageable) {
        int pageNumber = pageable.getPageNumber();
        int pageSize = pageable.getPageSize();
        int start = pageNumber * pageSize;

        String orderByWhat = "wcu.id";
        String orderRule = "ASC";

        if (! pageable.getSort().toString().equals("UNSORTED") ) {
            String[] split = pageable.getSort().toString().split(":");
            orderByWhat = split[0];
            orderRule = split[1];
        }

        String sql = String.format(
                    "SELECT " +
                        " wcu.* " +
                     "FROM " +
                        "table_wcu wcu " +
                     "WHERE " +
                        "wcu.del_flag = false " +
                     "ORDER BY %s %s " +
                     "LIMIT %s, %s", orderByWhat , orderRule , start , pageSize);
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(CompanyUser.class));
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄毕楠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值