前端表单涉及多个表数据的显示,需要用到自定义分页
import com.github.pagehelper.PageInfo;
@PostMapping(value = "/page")
@ApiOperation(value = "分页查询列表", httpMethod = "POST", notes = "分页查询列表")
public BaseResponse<PageInfo<ServiceTypeWebDto>> findPage(@RequestBody PageQueryParameter<ServiceTypeWebDto> param) {
//查询出需要分页的数据
List<ServiceTypeWebDto> serviceTypeWebDtos = serviceTypeService.findPage(param);
PageInfo<ServiceTypeWebDto> pageInfo = new PageInfo<>(serviceTypeWebDtos);
if (pageInfo.getPageSize() != param.getPageSize()) {
pageInfo.setPageNum(param.getPageNum());
pageInfo.setPageSize(param.getPageSize());
List<ServiceTypeWebDto> resList = PageUtil.getList(serviceTypeWebDtos, param.getPageNum(), param.getPageSize());
pageInfo.setList(resList);
}
int pages = 0;
if (!CollectionUtils.isEmpty(serviceTypeWebDtos)) {// 如果非空计算总页数
pages = serviceTypeWebDtos.size() / param.getPageSize();
if (serviceTypeWebDtos.size() % param.getPageSize() != 0)
pages++;
}
pageInfo.setPages(pages);
pageInfo.setIsFirstPage(pageInfo.getPageNum() == 1);
pageInfo.setIsLastPage(pageInfo.getPageNum() == pages || pageInfo.getPages() == 0);
return BaseResponse.successWithData(pageInfo);
}
用到的工具类
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class PageUtil<T> {
public static <T> List<T> getList(List<T> list, int num, int size) {
int firstNum = getFirstNum(num, size);
int lastNum = getLastNum(num, size, list.size());
List<T> newList = new ArrayList<T>();
if (CollectionUtils.isNotEmpty(list)) {
if (list.size() <= 10) {
return list;
}
for (int i = firstNum; i < lastNum; i++) {
newList.add(list.get(i));
}
}
return newList;
}
private static int getLastNum(int num, int size, int listSize) {
if ((num * size) > listSize) {
return listSize;
}
return num * size;
}
private static int getFirstNum(int num, int size) {
if (num < 1) {
return 0;
}
return (num - 1) * size;
}
}
// 分页 模糊查询 通过代码实现
可以通过 String里的indexof的方法去实现
例如:XXXXName().indexOf(query.getXXXXName()) >= 0