spring - Spring Boot Pagination 不适用于自定义 DTO 列表
问题描述
我坚持在 Spring Boot 项目中集成分页。
服务实现类
@Override
public Page<OnlineBuyProductReportItemDTO> generateOnlineBuyProductReport(String fromDate, String toDate, int pageNum, String sortField, String sortDir) {
Pageable pageable = PageRequest.of(pageNum - 1, 10,
sortDir.equals("asc") ? Sort.by(sortField).ascending()
: Sort.by(sortField).descending()
);
List<PurchaseOrder> purchaseOrderList = purchaseOrderRepository.searchPurchaseOrdersForOnlineBuyProductReport(
DateUtil.convertToDate(fromDate), DateUtil.convertToDate(toDate));
OnlineBuyProductReportItemDTO item = null;
List<OnlineBuyProductReportItemDTO> itemList = new ArrayList<OnlineBuyProductReportItemDTO>();
if(purchaseOrderList != null && purchaseOrderList.size() > 0) {
for (PurchaseOrder purchaseOrder : purchaseOrderList) {
item = new OnlineBuyProductReportItemDTO();
item.setOrderNumber(purchaseOrder.getOrderNumber());
item.setCreatedDate(DateUtil.convertDatetoStringSwissDate(purchaseOrder.getCreationTime()));
Address address = addressRepository.getAddressById(purchaseOrder.getBillingAddressId());
item.setCustomerName(address.getFullName());
item.setContactNumber(address.getTelephone());
List<OrderCart> orderCartList = orderCartRepository.getOrderCartByPurchaseOrderId(purchaseOrder.getId());
List<String> buyProductNameList = new ArrayList<String>();
if(orderCartList != null && orderCartList.size() > 0) {
for (OrderCart orderCart : orderCartList) {
buyProductNameList.add(orderCart.getProductName());
}
}
item.setProductName(buyProductNameList);
item.setPrice(purchaseOrder.getTotalPrice());
item.setStatus(purchaseOrder.getDeliveryStatus().getName());
itemList.add(item);
}
}
return new PageImpl<OnlineBuyProductReportItemDTO>(itemList, pageable,itemList.size());
}
在这里,我从 3 个数据库表中获取数据,并在数据处理后将这些数据添加到 DTO 列表中。
但是,与前端集成后,会显示分页选项,但没有按预期工作。包含相同数据集和排序选项的所有页面均未按预期工作。
似乎这个可分页部分不适用于数据处理。
Pageable pageable = PageRequest.of(pageNum - 1, 10,
sortDir.equals("asc") ? Sort.by(sortField).ascending()
: Sort.by(sortField).descending()
);
有什么办法可以做到这一点
解决方案
推荐阅读
- html - 如何在右键单击时在新选项卡中打开链接
- python - 如何为特定的 df 列创建间隔?
- python - 从数据框中删除具有 Python 中正则表达式模式的单词
- reactjs - React SSR 评估服务器页面上元素的大小
- python - 在 Numpy 中向量化矩形重叠确定
- php - 为什么我的 ssl 密钥和证书验证不适用于 NSS 而不是 Guzzle PHP 中的 (SecureTransport) OpenSSL/1.1.1
- laravel-8 - Laravel 8 || AppServiceProvider.php 中的 Route::currentRouteName()。怎么做?
- networking - 由于 network-pre.target 的依赖循环,服务不会启动
- python - 默认 cmd 终端的 VS Code 问题
- java - mockito when().thenReturn() 返回错误的值