排序
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)