自定义PageHelper分页工具

今天写了一个需要用到分页查询的需求

大概是这样的有一张项目表和一张报警表如下:

项目表:

报警表:

现在我就是要根据这个项目名称,报警类型和报警时间来查询报警列表.

项目可以模糊查询,看似是很简单的一个需求,但是我遇到了一个问题

我的大概思路就是先用项目名称去项目表里模糊查询项目信息,返回项目id,然后去报警表里根据项目id,报警类型,报警时间全部都满足最后返回完整的报警信息.

但是我遇到的问题就是根据项目名称模糊查项目表的时候查到了多条数据,这样我只能通过一个循环来把每个返回的项目id和传的报警类型报警时间去报警表里查,大概操作如下:

最后我新建了一个list集合把每次循环查到的数据都添加进去返回.

问题来了,当我用pagehelper进行分页的时候,我本来是这样写的

计算出来的total总是不对,显示的是展示的数据的数量反正就是一直显示不对

最后干脆不用别人封装好的了,直接手写一个分页工具,对最后的集合进行分页

        

     // 手动实现分页逻辑
          List<ZjDeviceAlarm> pageList = getPage(zjDeviceAlarms,             
            zjDeviceAlarmParam.getPage(), zjDeviceAlarmParam.getSize());
            // 使用PageInfo包装返回结果
            PageInfo<ZjDeviceAlarm> pageInfo = new PageInfo<>(pageList);
            pageInfo.setTotal(zjDeviceAlarms.size()); // 总条数
            return pageInfo;
 /**
     * 手动分页
     * @param list
     * @param page
     * @param size
     * @return
     */
    private List<ZjDeviceAlarm> getPage(List<ZjDeviceAlarm> list, int page, int size) {
        int startIndex = (page - 1) * size;
        if (startIndex >= list.size()) {
            return new ArrayList<>(); // 如果起始索引超出集合范围,返回空列表
        }
        int endIndex = Math.min(startIndex + size, list.size());
        return list.subList(startIndex, endIndex);
    }

这样一来就方便多了

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PageHelper是一个用于分页查询的Java工具,它可以帮助我们方便地进行分页操作。在PageHelper中,我们可以通过设置`pageSize`和`pageNum`来指定每页显示的记录数和当前页数。如果我们想要自定义每页显示的记录数,可以使用`PageHelper.startPage(pageNum, pageSize)`方法来设置。 下面是一个示例代码,演示了如何使用PageHelper自定义每页显示的记录数: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; public class Example { public static void main(String[] args) { // 设置每页显示的记录数为10 int pageSize = 10; // 设置当前页数为1 int pageNum = 1; // 使用PageHelper.startPage方法设置分页参数 PageHelper.startPage(pageNum, pageSize); // 执行查询操作,获取查询结果列表 List<User> userList = userDao.selectUserList(); // 使用PageInfo对查询结果进行包装 PageInfo<User> pageInfo = new PageInfo<>(userList); // 获取分页信息 int total = pageInfo.getTotal(); // 总记录数 int pages = pageInfo.getPages(); // 总页数 List<User> result = pageInfo.getList(); // 当前页的记录列表 // 输出分页信息和查询结果 System.out.println("总记录数:" + total); System.out.println("总页数:" + pages); System.out.println("当前页的记录列表:" + result); } } ``` 在上面的示例中,我们通过`PageHelper.startPage(pageNum, pageSize)`方法设置了每页显示的记录数为10。然后执行查询操作,获取查询结果列表。最后使用`PageInfo`对查询结果进行包装,可以获取到分页信息和当前页的记录列表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值