我尝试使用特定排序顺序获取 MySQL 查询结果:
mysql schema
item_id varchar
item_name varchar
category varchar
price double
create_date datetime
select * from item where category in ("fruit", "meat", "vegetable")
order by FIELD(category, "fruit", "meat", "vegetable")
它按预期工作(“水果”项目首先出现,“肉类”其次,“蔬菜”最后)。
但我目前坚持使用 Spring 的页面请求功能实现。
ItemRepository itemRepository;
Pageable pageable = PageRequest.of(page, size, Sort.sort("category"));
itemRepository.findItems(pageable);
我正在寻找类似的解决方案
Pageable pageable = PageRequest.of(page, size, Sort.sort({"fruit", "meat", "vegetable"}));
更新解决方案:通过在存储库中添加本机查询并将类别参数传递给存储库来解决:
项目存储库:
@Query(value = "select * from category order by Field(category, :category) ASC ", nativeQuery = true) List<ItemEntity> findItems(@Param("category") String categoryId, Pageable pageable);
物品服务:
ItemRepository itemRepository;
Pageable pageable = PageRequest.of(page, size);
itemRepository.findItems(category, pageable);