我想在数据表上显示大量数据。我使用Angular2作为UI,使用Spring REST API作为后端。如何使用分页和过滤器设计我的数据,以平滑地处理大量数据。我将如何设计我的后端以满足此要求。
答案 0 :(得分:0)
您可以实现分页REST服务。
假设我们想在数据表中显示数据库中的所有用户。
我们将有一个带有以下签名的方法:
public ResponseEntity<PaginatedResponse<User>> getUsers(
@RequestParam("page") int page, @RequestParam("size") int size)
这里我们发送请求中的页码和每页的大小。
我们定义响应:
public class PaginatedResponse<T> {
private List<T> responseList;
private int pageNumber;
private int pageSize;
private int totalPageNumber;
}
在回复中,我们将得到总页数和当前页面的大小及其索引。
对于数据层,您可以使用spring Data:
public interface UserRepository extends JpaRepository<User, Long>, QueryDslPredicateExecutor<User>
并声明提取可分页数据的方法:
@Query("select u, from User u")
Page<User> findUsers(final Pageable pageable);
请注意,您可以使用@Param
注释添加参数来过滤弹簧数据查询。
对于角度部分,您必须迭代http调用以获取数据,并且每次检查页面索引是否在范围内(即&lt; totalPageNumber)