Dao中定义下面的接口:
spring Data JPA中自定义的相关用法
/**
* CmsPage:模型类型。
* Sting:代表的是主键ID的类型。
* @Description TODO
* @Author Mr.Wu
* @Date 2019/7/24 19:23
* @Version 1.0
**/
public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
}
service中使用Example进行条件查询
*
* @param page :当前页
* @param size :每页显示的条数
* @param queryPageRequest :查询条件
* @return
*/
public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest){
if(queryPageRequest==null){
queryPageRequest = new QueryPageRequest();
}
if(page<0){
page=0;
}
if(size<0){
size =10;
}
//自定义条件查询
//定义条件匹配器
ExampleMatcher exampleMatcher = ExampleMatcher.matching()
.withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
//条件值对象
CmsPage cmsPage = new CmsPage();
//设置条件值
if(StringUtils.isNotEmpty(queryPageRequest.getSiteId())){
cmsPage.setSiteId(queryPageRequest.getSiteId());
}
//设置模板id作为查询条件
if(StringUtils.isNotEmpty(queryPageRequest.getTemplateId())){
cmsPage.setTemplateId(queryPageRequest.getTemplateId());
}
//设置页面别名作为查询条件
if(StringUtils.isNotEmpty(queryPageRequest.getPageAliase())){
cmsPage.setPageAliase(queryPageRequest.getPageAliase());
}
//定义条件对象Example
Example<CmsPage> example = Example.of(cmsPage,exampleMatcher);
Pageable pageable= PageRequest.of(page, size);
Page<CmsPage> all = cmsPageRepository.findAll(example,pageable); //实现自定义条件查询并且分页查询
QueryResult queryResult = new QueryResult();
queryResult.setList(all.getContent());
queryResult.setTotal(all.getTotalElements());
QueryResponseResult queryResponseResult = new QueryResponseResult(CommonCode.SUCCESS, queryResult);
return queryResponseResult;
}
}