我目前正在使用Spring JPA并使用此处所述的排序和分页 -
How to query data via Spring data JPA by sort and pageable both out of box?
现在我的问题是如何在这里应用'where'子句?
E.g。
where PRODUCT_NAME='abc';
答案 0 :(得分:26)
只需在存储库界面中创建一个查询方法即可。
查看文档here。
使用paging和where子句添加查询方法。
Page<User> findByLastname(String lastname, Pageable pageable);
因此,您可以通过属性“lastname”找到User并配置分页设置。
答案 1 :(得分:4)
我能找到的最简单方法是use QueryDSL or Specifications。我更喜欢QueryDSL。
答案 2 :(得分:1)
要获取Spring Data JPA,请应用排序,分页以及where子句检查下面的代码
实体类
@Entity
@Table(name = "users")
Public Class User{
private String name;
private Integer id;
private String email;
// add required setter getter//
}
存储库类
@Repository("userRepository")
@Transactional`
public interface UserRepository extends JpaRepository<User, Integer>{
}
服务层将使用Example对象的where子句与使用Pagable和Sort Class的Pagination + Sorting一起传递。我们将在控制器中实现Pageable,以注入Sorting逻辑,然后将该Pagable对象传递给服务Layer。
@Service
Public class UserService{
public Page<User> getUserListPaginated(`EXAMPLE<User>` searchTerm, Pageable pageable) {
return userRepo.findAll(searchTerm,pageable);
}
}
Example<T>
如果该属性的值为null,则不采用该属性。
为此,我在Entity类中使用了Integer id,因为我可以为首次调用将其值设置为null
现在的控制器类
@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<User> searchTerm = Example.of(new User());
Page<User> userList = userService.getUserListPaginated(searchTerm, pageable);
}
}