通过将列标题传递给不同的列进行排序

问题描述 投票:0回答:1

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

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

我希望这样,当我输入列名时,我将能够按列对所有行的结果进行排序。因此,例如,如果我要按名称订购,那么它应该返回A B C而不是A CB。我知道可以使用基本查询来实现,例如:

SELECT * FROM Customers
ORDER BY Name;

但是我不确定是否可以将该选项应用于所有列。因此,如果用户决定传递订购选项以解决问题,那么他们也可以这样做,而且如果他们决定也将其设置为城市。为了清楚起见,我尝试将选项应用于查询的所有列的排序,但不确定是否可行。如果不是,是否有其他选择?谢谢。

java sql jpql
1个回答
0
投票

如果使用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")));
}

© www.soinside.com 2019 - 2024. All rights reserved.