使用Spring的FIlter数据来自请求

时间:2013-08-08 13:25:57

标签: java spring spring-mvc filter request

我有一些来自请求的信息,例如:

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,我应该更改哪些内容才能过滤数据?

uiduser id对象中的user,我需要选择id包含ab的所有用户

任何帮助都会被贬低。

1 个答案:

答案 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);
        }