所以,思路很简单,我需要有一个后端排序过滤URL,就这样吧:
/users?find=Paul&sortBy=name:asc
到目前为止我有这个 Controller 方法:
@GetMapping("/users")
public List<User> findUserByName(@RequestParam Optional<String> find,
@RequestParam Optional<Integer> page,
@RequestParam Optional<String> sort)
{
return userRepository.findByName(find.orElse("_"),
new PageRequest(page.orElse(0),5,
Sort.Direction.ASC, sort.orElse("name")));
}
还有这个扩展 JpaRepository 的 UserRepository:
@Query("select u from User u where name like %?1%")
List<User> findByName(String name, Pageable pageable);
我的问题是:我在 Controller 本身中指定了排序状态(升序/降序),但我希望它在 url 中指定,如下所示:
/users?find=Paul&sortBy=name:asc
但现在它只对我有用
/users?find=Paul&sortBy=name
它会自动按升序排序,因为我在 Controller 方法中指定了它。
请您解释一下我该怎么做:)?
保重!
最佳答案
您可以使用 Direction.fromString(order)
方法,其中 order 可以是“asc”
或“描述”
对于订单你应该保持单独的参数
@RequestParam Optional<String> order
userRepository.findByName(find.orElse("_"),
new PageRequest(page.orElse(0),5,
Sort.Direction.fromString(order), sort.orElse("name")));
关于java - 我需要在 native 查询 Jpa 中使用 @RequestParam 在后端级别对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57655079/