Xin chào các bạn.
Gần đây khi review code mình thấy nhiều bạn viết tính năng phân trang như dưới đây. Khi được hỏi thì nói copy lại từ dự án cũ. Xin mọi người cho ý kiến.
public static Page<?> toPage(List<?> list, Pageable pageable) {
if (null == pageable || list == null || list.size() == 0) return null;
int start = (int) pageable.getOffset();
int end = Math.min((start + pageable.getPageSize()), list.size());
if (start > list.size())
return new PageImpl<>(new ArrayList<>(), pageable, list.size());
return new PageImpl<>(list.subList(start, end), pageable, list.size());
}
@Override
public List<PriceBookDTO> findAll() {
List<PriceBook> entities = repository.findAll();
return entities == null || entities.size() == 0 ? new ArrayList<>() :
entities.stream().map(obj -> mapper.convertEntityToDTO(obj)).collect(Collectors.toList());
}
Mục đích của topic để anh em chia sẻ những kinh nghiệm về tính năng này. Phân tích để những bạn trẻ, hiểu hơn về code mình đang làm.