public QueryResponseResult findList(Integer page, Integer pageSize, QueryPageRequest queryPageRequest) {
if(page<=0){
page = 1;
}
page = page -1;
//List<CmsPage> pageList = cmsPageRepository.findAll();
//设置分页
Pageable pageable = PageRequest.of(page, pageSize);
//创建CmsPage对象,存放条件
CmsPage cmsPage = new CmsPage();
//创建条件匹配器对象
ExampleMatcher exampleMatcher = ExampleMatcher.matching();
//if(queryPageRequest.getSiteId()!=null && !queryPageRequest.getSiteId().equals(""))
if(StringUtils.isNotEmpty(queryPageRequest.getSiteId())){
cmsPage.setSiteId(queryPageRequest.getSiteId());
}
if (StringUtils.isNotEmpty(queryPageRequest.getPageAliase())){
cmsPage.setPageAliase(queryPageRequest.getPageAliase());
//!!!!!!!!!!!!!!!!!!!!!!!! exampleMatcher.withMatcher()返回值也是ExampleMatcher,会覆盖,要特殊处理
exampleMatcher.withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
}
Example<CmsPage> example= Example.of(cmsPage,exampleMatcher);
//分页查询
Page<CmsPage> pages = cmsPageRepository.findAll(example,pageable);
//从查询结果中获取列表信息
List<CmsPage> pageList = pages.getContent();
//从查询结果中获取总条数
long totalElements = pages.getTotalElements();
QueryResult<CmsPage> queryResult = new QueryResult<>();
queryResult.setList(pageList);
queryResult.setTotal(totalElements);
QueryResponseResult result = new QueryResponseResult(CommonCode.SUCCESS, queryResult);
return result;
}
在页面分页查询的时候,发现模糊查询查询不到数据,但没有返回任何错误信息,令人十分苦恼...
好在最后找到了这个坑,原因是条件匹配器对象exampleMatcher 在指定查询规则的时候,即下面这行代码
exampleMatcher.withMatcher("pageAliase",ExampleMatcher.GenericPropertyMatchers.contains());
这个方法的返回值仍是一个ExampleMatcher,如果不进行处理,就相当于又重新创建了个新的ExampleMatcher对象
exampleMatcher = exampleMatcher.withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
这样接收一下就跳出了这个隐藏的坑...