当前位置: 首页 > news >正文

北京手机网站设计报价广东省建设安全中心网站

北京手机网站设计报价,广东省建设安全中心网站,wordpress新建页面是,网站关键词优化效果mongoTemplate不像SQL那么灵活#xff0c;组装条件较为复杂。 如下演示了查询类似于 AND name ‘张三’ OR age 12 NOT birthday 2024-12-31 这类结构的代码示例。 脑子里的范围图#xff1a; 所有的AND锁定一个范围#xff0c;再跟所有的OR组成的范围取并集#…mongoTemplate不像SQL那么灵活组装条件较为复杂。 如下演示了查询类似于 AND name ‘张三’ OR age 12 NOT birthday 2024-12-31 这类结构的代码示例。 脑子里的范围图 所有的AND锁定一个范围再跟所有的OR组成的范围取并集再剔除所有NOT的范围。 所以 如果没有AND则表示全范围那么OR也失去了意义这时候只看NOT 想象一个场景帮助理解 我是一个女的找对象的标准是必须是身高一米八以上的AND如果他身价一亿以上那么不到一米八也可以OR不过再怎么样脾气差的我不要NOT 以下是具体代码 1.前端传参封装Req Data class CaseLibrarySearchReq {private Integer page;private Integer size;// 条件组合列表private ListSearchFilterItem searchFilterItems; }Data class SearchFilterItem {// 过滤项名字private String filterName;// 过滤项值private Object filterValue;// 逻辑连接词private String logicWord; }2.mongoTemplate的复杂组装条件查询 /*** mongodb mongoTemplate的复杂组装条件查询*/ public MapString, Object search(CaseLibrarySearchReq caseLibrarySearchReq) {MapString, Object data new HashMap();Integer page caseLibrarySearchReq.getPage();Integer size caseLibrarySearchReq.getSize();data.put(page, page);data.put(size, size);ListSearchFilterItem searchFilterItems caseLibrarySearchReq.getSearchFilterItems();// 必须要满足的条件ListCriteria andCriteriaList ListUtil.toList();// 可选的条件ListCriteria orCriteriaList ListUtil.toList();// 要排除的条件ListCriteria notCriteriaList ListUtil.toList();// 过滤出有效的搜索项再根据逻辑关键词分组MapString, ListSearchFilterItem validFilterItemsMap searchFilterItems.stream().filter(item - item.getFilterValue() ! null StrUtil.isNotBlank(item.getFilterValue().toString())).collect(Collectors.groupingBy(SearchFilterItem::getLogicWord));// 组装过滤项for (Map.EntryString, ListSearchFilterItem entry : validFilterItemsMap.entrySet()) {String logicWord entry.getKey();ListSearchFilterItem validFilterItems entry.getValue();for (SearchFilterItem item : validFilterItems) {String filterName item.getFilterName();String filterValueStr item.getFilterValue().toString();// 针对每种字段单独写处理逻辑switch (filterName) {case case_number:// 精确匹配的字符串处理Criteria caseNumberCriteria Criteria.where(case_number).is(filterValueStr);if (AND.equals(logicWord)) {andCriteriaList.add(caseNumberCriteria);} else if (OR.equals(logicWord)) {orCriteriaList.add(caseNumberCriteria);} else if (NOT.equals(logicWord)) {notCriteriaList.add(caseNumberCriteria);}break;case case_name:// 模糊匹配的字符串处理Pattern pattern1 Pattern.compile(^.* filterValueStr .*$, Pattern.CASE_INSENSITIVE);Criteria caseNameCriteria Criteria.where(case_name).regex(pattern1);if (AND.equals(logicWord)) {andCriteriaList.add(caseNameCriteria);} else if (OR.equals(logicWord)) {orCriteriaList.add(caseNameCriteria);} else if (NOT.equals(logicWord)) {notCriteriaList.add(caseNameCriteria);}break;case public_date:// 日期类型处理String[] split filterValueStr.split(,);String startDate split[0];String endDate split[1];Criteria publicDateCriteria new Criteria().and(public_date).gte(startDate).lte(endDate);if (AND.equals(logicWord)) {andCriteriaList.add(publicDateCriteria);} else if (OR.equals(logicWord)) {orCriteriaList.add(publicDateCriteria);} else if (NOT.equals(logicWord)) {notCriteriaList.add(publicDateCriteria);}break;default:break;}}}// 至此过滤项分类组装完毕Criteria finalCriteria new Criteria();Criteria andOrcriteria;// 如果AND为空则只看NOTif (CollUtil.isEmpty(andCriteriaList)) {if (CollUtil.isNotEmpty(notCriteriaList)) {finalCriteria new Criteria().norOperator(notCriteriaList);// 上一行可能会报错也许跟版本有关参考下一行调试一下。下面的报错也是一样// finalCriteria new Criteria().norOperator(notCriteriaList.toArray(new Criteria[notCriteriaList.size()]));}} else {// 组装and 和orListCriteria andOrCriteriaList ListUtil.toList();andOrCriteriaList.add(new Criteria().andOperator(andCriteriaList));if (CollUtil.isNotEmpty(orCriteriaList)) {andOrCriteriaList.add(new Criteria().orOperator(orCriteriaList));}// 把and 和not合并andOrcriteria new Criteria().orOperator(andOrCriteriaList);// 如果 notCriteriaList 不为空if (CollUtil.isNotEmpty(notCriteriaList)) {finalCriteria new Criteria().andOperator(andOrcriteria,new Criteria().norOperator(notCriteriaList));} else {finalCriteria andOrcriteria;}}Query queryCount new Query();queryCount.addCriteria(finalCriteria);// 异步任务1 (查询数量因为mongoTemplate的分页无法返回总数)CompletableFutureVoid task1 this.queryTotalCount(data, queryCount);// 分页参数 注意分页时页码数是从0开始所以要-1PageRequest pageRequest PageRequest.of(page - 1, size);Query queryList new Query();queryList.addCriteria(finalCriteria);queryList.with(pageRequest);// 排序字段Sort sort Sort.by(Sort.Direction.DESC, public_date);queryList.with(sort);// 异步任务2 查询分页列表CompletableFutureVoid task2 this.querySearchList(data, queryList);// 等待所有任务执行完成CompletableFuture.allOf(task1, task2).join();return data; }3.计算count /*** 计算count*/ public CompletableFutureVoid caseLibraryCount(MapString, Object data, Query query) {return CompletableFuture.runAsync(() - {try {long total mongoTemplate.count(query, CaseLibrarySearchVO.class, case_library);data.put(total, total);} catch (Exception e) {log.error(计算count失败, e);}}); }4.查询列表 /*** 查询列表*/ public CompletableFutureVoid caseLibrarySearchList(MapString, Object data, Query query) {return CompletableFuture.runAsync(() - {try {// 执行分页查询ListCaseLibrarySearchVO caseLibraryEntityList mongoTemplate.find(query, CaseLibrarySearchVO.class, case_library);data.put(caseLibraryEntityList, caseLibraryEntityList);} catch (Exception e) {log.error(查询列表失败, e);}}); }
http://www.hkea.cn/news/14484826/

相关文章:

  • 传媒网站设计2023网站分享
  • 青岛网站推广怎么做好购买腾讯备案网站
  • 番禺建设网站公司哪家好不是固定ip如何做网站
  • 北京海大网智网站建设制作公司小学网站asp
  • 网站建设服务费费计入什么科目城乡建设环保部网站
  • 宜宾团购网站建设阿里云域名价格
  • 那个网站可以学做西餐属于网络制作平台的是
  • 沈阳网站制作网页wordpress怎么编辑的
  • 做图书馆网站新乡免费网站建设
  • 怎么关闭自己公司网站公示区信息查询方法
  • 公司网站建设建议自己建个网站需要什么
  • 北京价格网站建设wordpress 教学培训
  • 做网站的要到处跑吗正能量网站免费下载
  • 上传空间网站赣州新闻联播2023
  • 做网站时背景图片浮动网站建设水上乐园
  • 大连网站建设谁家好微信网站建设合同
  • 班组建设管理网站北京婚纱摄影网站
  • 莱芜买房网站潮州网站开发多少钱
  • 公司的网站是什么wordpress视频播放列表页
  • 张家港专业做网站做gif动态图网站
  • 长春网站建设长春湖南人文科技学院官网首页
  • 海外 推广网站网站开发 jz.woonl
  • 永和建设集团有限公司网站凡科网营销推广
  • 建设网站服务费会计分录php网站开发实例教程书
  • 高唐网站建设服务商容桂顺德网站建设
  • 大气装饰公司网站源码网站网站开发成本
  • 泰安网站建设找工作宜昌 网站建设 公司
  • 网站规划与建设参考文献企业资源计划系统
  • 网站 解析网站开发项目进度完成表
  • 四川省建设厅官方网站电话网页设计多少钱一个页面