cms02--后端-网站管理页面条件查询

页面条件查询接口

需求分析

在页面输入查询条件,查询符合条件的页面信息。

查询条件如下:

站点Id:精确匹配

模板Id:精确匹配

页面别名:模糊匹配

服务端

Dao

使用 CmsPageRepository中的findAll(Example<S> var1, Pageable var2)方法实现,无需定义。

下边测试fifindAll方法实现自定义条件查询:

 //页面条件查询测试dao
    @Test
    public void testFindAllByExample() {
        Pageable pageable = PageRequest.of(0, 10);
        //创建条件匹配器,注意匹配器每返回一个引用,在创建就是一个新对象了
        //可以链式调用实现多条件
        ExampleMatcher exampleMatcher = ExampleMatcher.matching()
                //要匹配的字段,和查询方式
                //contains:模糊匹配 startWith:开头匹配 等等
                .withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
//                .withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.startsWith());
        CmsPage cmsPage = new CmsPage();
        cmsPage.setPageAliase("分类导航");
        Example<CmsPage> example = Example.of(cmsPage,exampleMatcher);
        Page<CmsPage> all = cmsPageRepository.findAll(example, pageable);
        System.out.println(all);
    }

Service

由于前面编写了普通查询,也将封装的条件查询类QueryPageRequest也传入参数中

​ 因此,对之前的进行改造:

  • 定义条件查询对象Example,在定义条件值类型对象,cmsPage
  • 由于只有页面别名为条件匹配,其他为精确匹配,因此定义ExampleMacher条件匹配器,传入匹配字段,和查询方式
  • 使用lang3工具类公的isNotEmpty方法判断三个查询参数,存在就设置进去
  • 在findAll方法中将example对象传入,测试

    public QueryResponseResult findList( int page, int size, QueryPageRequest queryPageRequest){
        /**
         * 添加条件查询
         */
        //保证传过来的对象不为空
        if (queryPageRequest == null) {
            queryPageRequest = new QueryPageRequest();
        }
        //自定义分页查询
    //        定义条件匹配器
        ExampleMatcher exampleMatcher = ExampleMatcher.matching()
                .withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
        //条件值对象
        CmsPage cmsPage = new CmsPage();
    
        if (StringUtils.isNotEmpty(queryPageRequest.getSiteId())) {
            cmsPage.setSiteId(queryPageRequest.getSiteId());
        }
        if (StringUtils.isNotEmpty(queryPageRequest.getTemplateId())) {
            cmsPage.setTemplateId(queryPageRequest.getTemplateId());
        }
        if (StringUtils.isNotEmpty(queryPageRequest.getPageAliase())) {
            cmsPage.setPageAliase(queryPageRequest.getPageAliase());
        }
        //定义条件对象
        Example<CmsPage> example = Example.of(cmsPage, exampleMatcher);
        //分页参数
        if (page<=0){
            page = 1;
        }
        page = page - 1;
        if (size <= 0) {
            size = 10;
        }
        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 qr = new QueryResponseResult(CommonCode.SUCCESS,queryResult);
        return qr;
    }
    

Controller

​ 调用service,无需修改,

HuangRui

Every man dies, not every man really lives.

HaungRui, China suixinblog.cn