今天写了一个需要用到分页查询的需求
大概是这样的有一张项目表和一张报警表如下:
项目表:
报警表:
现在我就是要根据这个项目名称,报警类型和报警时间来查询报警列表.
项目可以模糊查询,看似是很简单的一个需求,但是我遇到了一个问题
我的大概思路就是先用项目名称去项目表里模糊查询项目信息,返回项目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);
}
这样一来就方便多了
标签:return,分页,自定义,报警,list,PageHelper,startIndex,size From: https://blog.csdn.net/djs6543/article/details/140363501