order-by通过传入列标题来为不同的列排序

bpsygsoo  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(302)

我不确定这是否可能实现,但希望找到有关我的java存储库jqpl查询的信息。我有这样一个示例表:

Name | Address | City |
--------------------------
   A  |    A    |   C  | 
   C  |    B    |   B  |
   B  |    C    |   A  |

我希望这样,当我传入一列的名称时,我将能够按列排序所有行的结果。例如,如果我要按名称排序,那么它应该返回bc而不是cb。我知道这可以通过使用基本查询来实现,例如:

SELECT * FROM Customers
ORDER BY Name;

但是,我不确定是否有可能将该选项应用于所有列。因此,如果用户决定将order选项传递给address,他们可以这样做,但如果用户决定将其设置为city,也可以这样做。所以为了明确起见,我尝试将选项应用于我的查询的所有列的order,但不确定这是否可行。如果不是,还有别的选择吗?谢谢。

sc4hvdpw

sc4hvdpw1#

如果您正在使用 JpaRepository 您可以使用 Sort 参数:

@Repository
public interface CustomerRepository extends JpaRepository<Customers, Long> {

    List<Customer> findAll(Sort by);
}

定制分拣服务:

@Autowired
private CustomerRepository customerRepository;

public List<Customer> getCustomers(String ... columnNames) {
    return customerRepository.findAll(Sort.by(columnNames));
}

public List<Customer> getCustomersOrderedByNameDescAndAddress() {
    return customerRepository.findAll(Sort.by("name").descending().and(Sort.by("address")));
}

相关问题