处理特殊参数

通过上面的例子,我们知道可以方便的通过定义方法的参数来处理查询中的参数。除此之外,我们还可以为方法添加某些特定类型的参数(如:PageableSort)来动态的在查询中添加分页和排序。

Example 7. Using Pageable, Slice and Sort in query methods(查询中进行分页和排序)

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

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

List<User> findByLastname(String lastname, Sort sort);

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

第一个例子中我们向方法传递一个org.springframework.data.domain.Pageable的实例来为查询动态的添加分页,返回的Page对象中包含元素总数和当前页的数据。其中的元素总数是通过Spring Data自动触发的一个count查询获得的。但是count查询有时会降低一定的性能,所以在不需要总数时,我们可以使用Slice来代替Page。Slice仅仅可以知道是否有可用的下一个Slice。 排序操作也可以通过Pageable实例来处理。但如果你需要的只是排序,只需要为方法添加org.springframework.data.domain.Sort类型的参数即可。我们也可以只简单的返回一个list,这时就不会执行count查询,只查询给定范围的实体类。

如果想知道总共有多少页,就必须触发一个额外的count查询