I am currently Using Spring JPA and utilizing the Sorting and Pagination as described here -
How to query data via Spring data JPA by sort and pageable both out of box?<
To fetch Spring Data JPA apply sorting, pagination along with a where clause check bellow codes
Entity class
@Entity
@Table(name = "users")
Public Class User{
private String name;
private Integer id;
private String email;
// add required setter getter//
}
Repository class
@Repository("userRepository")
@Transactional`
public interface UserRepository extends JpaRepository{
}
Service layer to pass where clause using Example object and Pagination+Sorting together using Pagable and Sort Class. We will implement Pageable in controller to inject Sorting logic then will pass that Pagable object to service Layer.
@Service
Public class UserService{
public Page getUserListPaginated(`EXAMPLE` searchTerm, Pageable pageable) {
return userRepo.findAll(searchTerm,pageable);
}
}
Example
does not take the attribute if its value is null.
for that I used Integer id in Entity class as I can set it's value null for first call
Now Controller Class
@Controller
Public class UserController{
@Autowired UserService userService;
@GetMapping("/users")
public String users(Model model,@RequestParam(value="page",defaultValue = "0") Integer pageNumber, @SortDefault(sort = "name", direction = Sort.Direction.ASC) Sort sort){
Pageable pageable = PageRequest.of(pageNumber,10, sort);
Example searchTerm = Example.of(new User());
Page userList = userService.getUserListPaginated(searchTerm, pageable);
}
}