Skip to content

Commit 08bf25d

Browse files
committed
pagination feature:
search with pagination,sort order and sort direction
1 parent 6aa5bae commit 08bf25d

3 files changed

Lines changed: 19 additions & 14 deletions

File tree

src/main/java/ir/bigz/springbootreal/controller/SampleController.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import ir.bigz.springbootreal.service.UserService;
44
import ir.bigz.springbootreal.viewmodel.UserModel;
55
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Sort;
67
import org.springframework.http.HttpStatus;
78
import org.springframework.http.MediaType;
89
import org.springframework.http.ResponseEntity;
@@ -60,19 +61,22 @@ public ResponseEntity<?> getAllUser() {
6061
}
6162

6263
@GetMapping(path = "/user/search", produces = MediaType.APPLICATION_JSON_VALUE)
63-
public ResponseEntity<?> getPage(@RequestParam(name = "pagenumber") Integer pageNumber,
64-
@RequestParam(name = "pagesize") Integer pageSize,
65-
@RequestParam(name = "sortorder") String sortOrder) {
66-
Page<UserModel> userPageResult = userService.getUserSearchResult(pageNumber, pageSize, sortOrder);
64+
public ResponseEntity<?> getUserWithSearch(@RequestParam(name = "searchfield") String searchField,
65+
@RequestParam(name = "sortorder") String sortOrder,
66+
@RequestParam(name = "direction") String direction,
67+
@RequestParam(name = "pagenumber") Integer pageNumber,
68+
@RequestParam(name = "pagesize") Integer pageSize) {
69+
Page<UserModel> userPageResult = userService.getUserSearchResult(searchField, sortOrder, Sort.Direction.fromString(direction), pageNumber, pageSize);
6770
return ResponseEntity.ok(userPageResult);
6871
}
6972

7073

71-
@GetMapping(path = "/user/all", produces = MediaType.APPLICATION_JSON_VALUE)
72-
public ResponseEntity<?> getAllUserPage(@RequestParam(name = "pagenumber") Integer pageNumber,
73-
@RequestParam(name = "pagesize") Integer pageSize,
74-
@RequestParam(name = "sortorder") String sortOrder) {
75-
Page<UserModel> userPageResult = userService.getAllUserPagebale(pageNumber, pageSize, sortOrder);
74+
@GetMapping(path = "/user/all/pagerquest", produces = MediaType.APPLICATION_JSON_VALUE)
75+
public ResponseEntity<?> getAllUserPage(@RequestParam(name = "sortorder", required = false) String sortOrder,
76+
@RequestParam(name = "direction") String sortDirection,
77+
@RequestParam(name = "pagenumber") Integer pageNumber,
78+
@RequestParam(name = "pagesize") Integer pageSize) {
79+
Page<UserModel> userPageResult = userService.getAllUserPage(sortOrder, Sort.Direction.fromString(sortDirection), pageNumber, pageSize);
7680
return ResponseEntity.ok(userPageResult);
7781
}
7882

src/main/java/ir/bigz/springbootreal/service/UserService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import ir.bigz.springbootreal.dao.User;
44
import ir.bigz.springbootreal.viewmodel.UserModel;
55
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Sort;
67
import org.springframework.stereotype.Service;
78

89
import java.util.List;
@@ -20,7 +21,7 @@ public interface UserService {
2021

2122
List<UserModel> getAll();
2223

23-
Page<UserModel> getUserSearchResult(Integer pageNumber, Integer pageSize, String sortOrder);
24+
Page<UserModel> getUserSearchResult(String searchField, String sortOrder, Sort.Direction direction, Integer pageNumber, Integer pageSize);
2425

25-
Page<UserModel> getAllUserPagebale(Integer pageNumber, Integer pageSize, String sortOrder);
26+
Page<UserModel> getAllUserPage(String sortOrder, Sort.Direction sortDirection, Integer pageNumber, Integer pageSize);
2627
}

src/main/java/ir/bigz/springbootreal/service/UserServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public List<UserModel> getAll() {
117117

118118
@Override
119119
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
120-
public Page<UserModel> getUserSearchResult(Integer pageNumber, Integer pageSize, String sortOrder) {
120+
public Page<UserModel> getUserSearchResult(String searchField, String sortOrder, Sort.Direction direction, Integer pageNumber, Integer pageSize) {
121121
try {
122122
Pageable pageable = PageRequest.of(pageNumber, pageSize);
123123
String query = "select u from User u order by u.id " + sortOrder;
@@ -136,8 +136,8 @@ public Page<UserModel> getUserSearchResult(Integer pageNumber, Integer pageSize,
136136

137137
@Override
138138
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
139-
public Page<UserModel> getAllUserPagebale(Integer pageNumber, Integer pageSize, String sortOrder){
140-
Sort.Order order = new Sort.Order(Sort.Direction.ASC, sortOrder);
139+
public Page<UserModel> getAllUserPage(String sortOrder, Sort.Direction sortDirection, Integer pageNumber, Integer pageSize){
140+
Sort.Order order = new Sort.Order(sortDirection, sortOrder);
141141
Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(order));
142142
Page<User> all = userRepository.getAll(pageable);
143143
List<UserModel> collect = all.get().map(userMapper::userToUserModel).collect(Collectors.toList());

0 commit comments

Comments
 (0)