15
4

3 回答 3

27

为此,只需在您的存储库界面中创建一个查询方法。

在这里查看文档。

添加带有分页和 where 子句的查询方法。

Page<User> findByLastname(String lastname, Pageable pageable);

因此,您可以通过属性“姓氏”找到用户并配置分页设置。

于 2013-01-02T10:50:31.937 回答
4

我能找到的最简单的方法是使用 QueryDSL 或 Specifications。我更喜欢 QueryDSL。

于 2013-01-02T10:43:06.583 回答
0

要获取 Spring Data JPA 应用排序、分页以及 where 子句,请检查以下代码

  1. 实体类

    @Entity
    @Table(name = "users")
    Public Class User{
        private String name;
        private Integer id;
        private String email;
        // add required setter getter//
    }
    
  2. 存储库类

    @Repository("userRepository")
    @Transactional`
        public interface UserRepository extends JpaRepository<User, Integer>{
    
        }
    
  3. 服务层使用 Example 对象传递 where 子句,使用 Pagable 和 Sort Class 一起传递 Pagination+Sorting。我们将在控制器中实现 Pageable 以注入排序逻辑,然后将该 Pagable 对象传递给服务层。

     @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 以进行第一次调用

  1. 现在控制器类

    @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);
    
    
        }
    }
    
于 2018-12-29T12:30:10.457 回答