在Spring Boot中根据属性值排序

问题描述

我正在使用Spring Boot中提供的Sort功能对我的结果进行排序。考虑具有诸如“ id”,“ name”和“ expertise”之类的属性的“ Employee”实体。

“ expertise”属性可以具有“ Java”,“ Python”,“ Admin”,“ Pascal”等值。我需要根据专业知识对员工进行排序,使其顺序如下-

  1. Python
  2. Java
  3. 帕斯卡
  4. 管理员

spring boot的“排序”功能中是否有任何方法可以实现这种排序?

解决方法

我假设您正在使用分页和排序存储库。否则,您将无法分类。对于分页和排序存储库,您必须将存储库方法扩展到PagingAndSortingRepository

现在,当您调用findall()方法时,还可以传递您的sort参数。例子-

List<Employee> employees = repository.findAll(Sort.by(Sort.Direction.DESC,"expertise"));
,

找到了可行的解决方案。对于每种专业知识,我添加了一个整数类型的列,名称为“ order_number”。我没有使用专业名称,而是开始使用order_number列进行排序,并且产生了预期的结果。