我有一些来自请求的信息,例如:
http://localhost:9080/online/accounts/list/usersQuery?filter=uid&value=ab
我必须在Spring中处理此问题,其中对象为uid
且过滤器值为ab
到目前为止,我在Spring
中有以下代码:
@RequestMapping(produces="application/json", value = "/usersQuery", method=RequestMethod.GET)
public @ResponseBody PagedResources<Resource<UserDetails>> listItemsSortQuery(@PageableDefault(size = 20, page = 0) Pageable pageable, PagedResourcesAssembler<UserDetails> assembler) {
Page<UserDetails> lstUserDetails = userDetailsRepository.findAll(pageable);
return assembler.toResource(lstUserDetails);
}
但它并没有考虑这两个值。
根据字段uid
和过滤数据ab
,我应该更改哪些内容才能过滤数据?
uid
是user id
对象中的user
,我需要选择id
包含ab
的所有用户
任何帮助都会被贬低。
答案 0 :(得分:2)
尝试使用@RequestParam获取uid值
@RequestMapping(produces="application/json", value = "/usersQuery", method=RequestMethod.GET)
public @ResponseBody PagedResources<Resource<UserDetails>> listItemsSortQuery(@PageableDefault(size = 20, page = 0) Pageable pageable, PagedResourcesAssembler<UserDetails> assembler,
@RequestParam("filter")String filter, @RequestParam("value")String value) {
Page<UserDetails> lstUserDetails = userDetailsRepository.findByFilter(pageable, filter, value);
return assembler.toResource(lstUserDetails);
}
已编辑:
在您的存储库中,您需要一种过滤数据的方法,即
public interface UserDetailsRepository extends JpaRepository<UserDetails, Long> {
@Query("SELECT u FROM UserDetails u WHERE LOWER(?1) = LOWER(?2)")
Page<UserDetails> findByFilter(String filter, String value, Pageable pageable);
}