Java 使用来自请求的Spring筛选数据

Java 使用来自请求的Spring筛选数据,java,spring,spring-mvc,filter,request,Java,Spring,Spring Mvc,Filter,Request,我有一些来自请求的信息,例如: http://localhost:9080/online/accounts/list/usersQuery?filter=uid&value=ab 我必须在春季处理这个问题,对象是uid,过滤值是ab 到目前为止,我在Spring中有以下代码: @RequestMapping(produces="application/json", value = "/usersQuery", method=RequestMethod.GET) public @Resp

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

http://localhost:9080/online/accounts/list/usersQuery?filter=uid&value=ab
我必须在春季处理这个问题,对象是
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);
}
@RequestMapping(products=“application/json”,value=“/usersQuery”,method=RequestMethod.GET)
public@responseBy PagedResources ListItemsOrtQuery(@PageableDefault(size=20,page=0)Pageable PageTable,PagedResourcesAssembler汇编程序){
Page lstUserDetails=userDetailsRepository.findAll(可分页);
返回assembler.toResource(lstUserDetails);
}
但是它并没有考虑这两个值。

为了根据字段
uid
和filter data
ab
过滤数据,我应该更改什么

uid
user
对象中的
user id
,我需要选择所有具有
id
包含
ab


非常感谢您的帮助。

尝试使用@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);
    }
@RequestMapping(products=“application/json”,value=“/usersQuery”,method=RequestMethod.GET)
public@responseBy PagedResources ListItemsOrtQuery(@PageableDefault(size=20,page=0)Pageable Pageable,PagedResourcesAssembler汇编程序,
@RequestParam(“筛选器”)字符串筛选器,@RequestParam(“值”)字符串值){
Page lstUserDetails=userDetailsRepository.findByFilter(可分页、筛选、值);
返回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);
        }
public interface UserDetailsRepository扩展了JpaRepository{
@查询(“从UserDetails u中选择u,其中较低(?1)=较低(?2)”)
PageFindByFilter(字符串过滤器、字符串值、可分页);
}

我不明白我必须在Spring中处理这个问题,对象是uid,过滤值是ab。你是什么意思?在
@RequestMapping
中,可以指定属性
params={“uid=ab”}
我认为我的评论与您的用例无关。您想在您的方法中获取uid值以过滤数据吗?如果您不知道从您的方法中获取uid值将使用哪个过滤器,则更好。您的UserDetails存储库中没有任何方法来过滤数据吗?。我在代码中编辑了一个错误,pageable是最后一个参数。立即尝试否,您的筛选器必须是此方法中的一列。您需要知道此时正在筛选的列的名称。在调用此方法之前,可以重命名筛选器名称或转换该名称