基本概念
org.springframework.data.domain.Sort 是 Spring Data 提供的用于排序查询结果的工具类,支持单字段或多字段排序,可与 Spring Data JPA、MongoDB 等模块集成。
创建排序对象
单字段排序
通过字段名和排序方向(升序/降序)创建:
Sort sort = Sort.by(Sort.Direction.ASC, "name"); // 按name升序
Sort sort = Sort.by(Sort.Direction.DESC, "createTime"); // 按createTime降序
多字段排序
通过Order对象组合多个排序条件:
Sort sort = Sort.by(
Sort.Order.asc("name"),
Sort.Order.desc("age")
);
排序方向常量
Sort.Direction.ASC:升序Sort.Direction.DESC:降序
与 Repository 结合使用
在 Spring Data JPA 的查询方法中直接使用:
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findAll(Sort sort); // 动态排序查询
}
调用示例:
List<User> users = userRepository.findAll(Sort.by("name").ascending());
链式调用
支持链式设置排序条件:
Sort sort = Sort.by("name").ascending().and(Sort.by("age").descending());
忽略大小写排序
对字符串字段可忽略大小写:
Sort sort = Sort.by(Sort.Order.by("name").ignoreCase());
使用注意事项
- 字段名需与实体类属性名一致,否则会抛出异常。
- 适用于派生查询(如
findBy)、@Query注解或JpaSpecificationExecutor。 - 在 MongoDB 中同样适用,但字段名需对应文档字段。
示例完整代码
// 创建排序
Sort sort = Sort.by(
Sort.Order.asc("name").ignoreCase(),
Sort.Order.desc("id")
);
// 在Repository中使用
List<User> users = userRepository.findAll(sort);
// 直接用于JPA查询
Page<User> page = userRepository.findAll(PageRequest.of(0, 10, sort));
通过灵活组合Sort,可以轻松实现动态排序需求。
427

被折叠的 条评论
为什么被折叠?



