问问题
30559 次
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 子句,请检查以下代码
实体类
@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 以注入排序逻辑,然后将该 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 以进行第一次调用
现在控制器类
@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 回答