springboot集成spring data jpa使用排序查询(gradle)

it2023-08-11  84

排序

JpaRepository中的api

/* * (non-Javadoc) * @see org.springframework.data.repository.PagingAndSortingRepository#findAll(org.springframework.data.domain.Sort) */ @Override List<T> findAll(Sort sort);

注:若findAll不填参数,可调用List findAll(); 返回结果为数据表中的所有数据

遇到的坑

在springboot2.2.1(含)以上的版本Sort已经不能再实例化了,构造方法已经是私有的了!

以按年龄降序查询所有用户信息

原调用写法为:

//先定义 Order规则 //Direction.DESC 表示倒序 //"age" 表示对id 进行倒序排序 Sort.Order order = new Sort.Order(Sort.Direction.DESC, "age"); Sort sort = new Sort(order);//本行Sort构造方法报错 var allUsersSort=userRepository.findAll(sort); allUsersSort.forEach(System.out::println);

新写法为:

var allUsersSort=userRepository.findAll(Sort.by(Sort.Direction.DESC,"age")); allUsersSort.forEach(System.out::println);

运行结果:

//结果上部省略,一下是返回结果的最后,可以看见输出顺序已按age降序排列 User(name=lzc39, pass=123, age=123, email=aksjlaklsdf, id=51) User(name=lzc40, pass=123, age=123, email=aksjlaklsdf, id=52) User(name=lzc41, pass=123, age=123, email=aksjlaklsdf, id=53) User(name=tzy, pass=321, age=23, email=ksdja, id=4) User(name=dk, pass=123, age=22, email=asflh, id=3) User(name=lxj, pass=123, age=21, email=jksdf, id=2) User(name=lzc19, pass=123, age=5, email=aksjlaklsdf, id=31) User(name=lzc17, pass=123, age=4, email=aksjlaklsdf, id=29) User(name=lzc10, pass=123, age=3, email=aksjlaklsdf, id=22) User(name=lzc, pass=960929, age=2, email=aksjlaklsdf, id=11) User(name=lzc2, pass=123, age=1, email=aksjlaklsdf, id=14)
最新回复(0)