Return to site

Spring boot PAGINATION example

ยท java

Sometimes, your JPA query returns a lot of results.

To handle such amount of data, you should use pagination.

And thanksfully, JPA provides an API for such needs.

 

1๏ธโƒฃ ๐“๐ก๐ž ๐ซ๐ž๐ฉ๐จ๐ฌ๐ข๐ญ๐จ๐ซ๐ฒ ๐Ÿ’พ ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡

@Repository
public interface EmployeeRepository 
    extends ๐๐š๐ ๐ข๐ง๐ ๐€๐ง๐๐’๐จ๐ซ๐ญ๐ข๐ง๐ ๐‘๐ž๐ฉ๐จ๐ฌ๐ข๐ญ๐จ๐ซ๐ฒ<EmployeeEntity, Long> {
 }

 

2๏ธโƒฃ ๐“๐ก๐ž ๐ฌ๐ž๐ซ๐ฏ๐ข๐œ๐ž ๐Ÿ‘จโ€๐Ÿ”ง ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡

@Service
public class EmployeeService 
{
  @Autowired
  EmployeeRepository ๐ซ๐ž๐ฉ๐จ๐ฌ๐ข๐ญ๐จ๐ซ๐ฒ;
   
  public List<EmployeeEntity> getAllEmployees(Integer pageNo, Integer pageSize, String sortBy)
  {
    ๐๐š๐ ๐ž๐š๐›๐ฅ๐ž ๐ฉ๐š๐ ๐ข๐ง๐  = ๐๐š๐ ๐ž๐‘๐ž๐ช๐ฎ๐ž๐ฌ๐ญ.๐จ๐Ÿ(๐ฉ๐š๐ ๐ž๐๐จ, ๐ฉ๐š๐ ๐ž๐’๐ข๐ณ๐ž, ๐’๐จ๐ซ๐ญ.๐›๐ฒ(๐ฌ๐จ๐ซ๐ญ๐๐ฒ));
 
    Page<EmployeeEntity> pagedResult = ๐ซ๐ž๐ฉ๐จ๐ฌ๐ข๐ญ๐จ๐ซ๐ฒ.findAll(paging);
     
    if(pagedResult.hasContent()) {
      return pagedResult.getContent();
    } else {
      return new ArrayList<EmployeeEntity>();
    }
  }
}

 

 

3๏ธโƒฃ ๐“๐ก๐ž ๐œ๐จ๐ง๐ญ๐ซ๐จ๐ฅ๐ฅ๐ž๐ซ ๐Ÿ‘ฎโ€โ™‚๏ธ ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡

@RestController
@RequestMapping("/employees")
public class EmployeeController 
{
  @Autowired
  EmployeeService ๐ฌ๐ž๐ซ๐ฏ๐ข๐œ๐ž;
 
  @GetMapping
  public ResponseEntity<List<EmployeeEntity>> getAllEmployees(
            @RequestParam(defaultValue = "0") Integer pageNo, 
            @RequestParam(defaultValue = "10") Integer pageSize,
            @RequestParam(defaultValue = "id") String sortBy) 
  {
    List<EmployeeEntity> list = ๐ฌ๐ž๐ซ๐ฏ๐ข๐œ๐ž.getAllEmployees(pageNo, pageSize, sortBy);
 
    return new ResponseEntity<List<EmployeeEntity>>(list, new HttpHeaders(), HttpStatus.OK); 
  }
}