如何在以下代码中加入分页的功能 后端代码:@Query( "select approvalRecord from ApprovalRecord approvalRecord inner join ApprovalRecordItem approvalRecordItem on approvalRecord = approvalRecordItem.approvalRecord where approvalRecordItem.status <> 'AUDITING' and approvalRecordItem.createdBy.login = ?#{principal.username} order by approvalRecordItem.id desc" ) List<ApprovalRecord> findAuditedByCurrentUser(); @GetMapping("/approval-records/my-created") public List<ApprovalRecord> getAllCreatedApprovalRecords() { log.debug("REST request to get all getAllCreatedApprovalRecords"); return approvalRecordRepository.findByCreatedByIsCurrentUser(); } 前段代码: queryAuditing(req?: any): Observable<EntityArrayResponseType> { const options = createRequestOption(req); return this.http .get<IApprovalRecord[]>(${this.resourceUrl}/my-auditing, { params: options, observe: 'response' }) .pipe(map((res: EntityArrayResponseType) => this.convertDateArrayFromServer(res))); } loadAll(): void { this.approvalRecordService.queryAuditing().subscribe((res: HttpResponse<IApprovalRecord[]>) => { this.auditingApprovalRecords = res.body ?? []; });
时间: 2023-12-10 14:42:15 浏览: 23
首先,你需要在后端代码中添加分页功能。你可以使用Spring框架提供的分页功能。修改findAuditedByCurrentUser()方法,使其返回一个Page对象,而不是List对象。以下是示例代码:
```
@Query("select approvalRecord from ApprovalRecord approvalRecord inner join ApprovalRecordItem approvalRecordItem on approvalRecord = approvalRecordItem.approvalRecord where approvalRecordItem.status <> 'AUDITING' and approvalRecordItem.createdBy.login = ?#{principal.username} order by approvalRecordItem.id desc")
Page<ApprovalRecord> findAuditedByCurrentUser(Pageable pageable);
```
这里使用了Spring提供的Pageable对象来进行分页。Pageable对象包含了分页大小、页数、排序方式等信息。你可以在调用findAuditedByCurrentUser()方法时传递一个Pageable对象,从而实现分页。以下是示例代码:
```
@GetMapping("/approval-records/my-created")
public List<ApprovalRecord> getAllCreatedApprovalRecords(Pageable pageable) {
log.debug("REST request to get all getAllCreatedApprovalRecords");
return approvalRecordRepository.findByCreatedByIsCurrentUser(pageable);
}
```
在前端代码中,你需要修改queryAuditing()方法来传递分页参数。以下是示例代码:
```
queryAuditing(req?: any): Observable<EntityArrayResponseType> {
const options = createRequestOption(req);
return this.http
.get<IApprovalRecord[]>(`${this.resourceUrl}/my-auditing`, {
params: {
page: options.page, // 页数
size: options.size, // 分页大小
sort: options.sort // 排序方式
},
observe: 'response'
})
.pipe(map((res: EntityArrayResponseType) => this.convertDateArrayFromServer(res)));
}
```
在loadAll()方法中,你需要传递一个Pageable对象来获取分页数据。以下是示例代码:
```
loadAll(): void {
this.approvalRecordService.queryAuditing({
page: this.page - 1, // 页数
size: this.itemsPerPage, // 分页大小
sort: this.sort() // 排序方式
}).subscribe((res: HttpResponse<IApprovalRecord[]>) => {
this.auditingApprovalRecords = res.body ?? [];
this.totalItems = Number(res.headers.get('X-Total-Count'));
});
}
```
在这里,我们使用了this.page、this.itemsPerPage和this.sort()来构造一个Pageable对象,并传递给queryAuditing()方法。同时,我们从HttpResponse对象的headers中获取了总条目数,用于分页组件的显示。