1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| @GetMapping("/student")
@Timed
public ResponseEntity<List<StudentDTO>> getAllStudent(Pageable pageable) {
Page<StudentDTO> page=studentService.getAllStudent(pageable);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/student");
return ResponseEntity.ok().headers(headers).body(page.getContent());
}
public Page<StudentDTO> getAllStudent(Pageable pageable) {
Integer count = 0;
if (pageable != null && !pageable.isUnpaged()) {
String queryCountStr = "SELECT count(*) ";
queryCountStr += " FROM student ";
count = getCount(queryCountStr, new String[] { }, new Object[]
{ });
}
String querystr = "SELECT ";
querystr += " student.name,student.department ";
querystr += " FROM student ";
if (pageable != null && !pageable.isUnpaged()) {
querystr += "LIMIT " + pageable.getPageSize() + " OFFSET " + pageable.getPageNumber();
}
List<StudentDTO> students = getResultList(querystr, "studentMap", new String[]
{ },
new Object[] {}).stream().map(object -> (StudentDTO) object).collect(Collectors.toList());
return (pageable != null && pageable.isUnpaged()) ? new PageImpl<StudentDTO>(students)
: new PageImpl<StudentDTO>(students, pageable, count);
}
public static <T> HttpHeaders generatePaginationHttpHeaders(Page<T> page, String baseUrl) {
HttpHeaders headers = new HttpHeaders();
headers.add("X-Total-Count", Long.toString(page.getTotalElements()));
String link = "";
if ((page.getNumber() + 1) < page.getTotalPages()) {
link = "<" + generateUri(baseUrl, page.getNumber() + 1, page.getSize()) + ">; rel=\"next\",";
}
// prev link
if ((page.getNumber()) > 0) {
link += "<" + generateUri(baseUrl, page.getNumber() - 1, page.getSize()) + ">; rel=\"prev\",";
}
// last and first link
int lastPage = 0;
if (page.getTotalPages() > 0) {
lastPage = page.getTotalPages() - 1;
}
link += "<" + generateUri(baseUrl, lastPage, page.getSize()) + ">; rel=\"last\",";
link += "<" + generateUri(baseUrl, 0, page.getSize()) + ">; rel=\"first\"";
headers.add(HttpHeaders.LINK, link);
return headers;
} |
Partager