zoukankan      html  css  js  c++  java
  • springBootJpa的复杂查询

    分页

    /**
         * 条件查询+分页
         * @param whereMap
         * @param page
         * @param size
         * @return
         */
        public Page<CaseManage> findSearch(Map whereMap, int page, int size,Integer createId) {
            Sort sort = new Sort(Sort.Direction.DESC,"id");
            Specification<CaseManage> specification = createSpecification(whereMap,createId);
            PageRequest pageRequest = new PageRequest(page,size,sort);
            return caseDao.findAll(specification, pageRequest);
        }
        
        /**
         * 条件查询
         * @param whereMap
         * @return
         */
        public List<CaseManage> findSearch(Map whereMap,Integer createId) {
            Specification<CaseManage> specification = createSpecification(whereMap, createId);
            return caseDao.findAll(specification);
        }
        
        /**
         * 动态条件构建
         * @param searchMap
         * @return
         */
        private Specification<CaseManage> createSpecification(Map searchMap,Integer createId) {
    
            return new Specification<CaseManage>() {
    
                @Override
                public Predicate toPredicate(Root<CaseManage> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                    List<Predicate> predicateList = new ArrayList<Predicate>();
                    // 案件名称
                    if (searchMap.get("case_name")!=null && !"".equals(searchMap.get("case_name"))) {
                        predicateList.add(cb.like(root.get("case_name").as(String.class), "%"+(String)searchMap.get("case_name")+"%"));
                    }
                    // 案件编号uuid类型
                    if (searchMap.get("case_uuid")!=null && !"".equals(searchMap.get("case_uuid"))) {
                        predicateList.add(cb.equal(root.get("case_uuid").as(String.class), (String)searchMap.get("case_uuid")));
                    }
                    return cb.and( predicateList.toArray(new Predicate[predicateList.size()]));
    
                }
            };
    
        }

    or查询

    想实现这样的效果

    where (state=1 or state=2and name='zhangsan'

    java代码

    List<Predicate> predicateList = new ArrayList<Predicate>();
    Predicate or = cb.or(cb.and(cb.equal(root.get("case_authority").as(String.class), "0")), cb.and(cb.equal(root.get("create_id").as(String.class), String.valueOf(createId))));
    predicateList.add(or);
  • 相关阅读:
    react开发环境搭建
    react 组件创建
    Redux 视频教程
    echars3.0 柱状图y轴字体斜放
    echars3.0 柱状图大小设置
    ECharts地图详解 【转】
    html 超出出现省略号
    html JS打印添加水印图片
    js 重庆38区县 数组
    docker 暴露2375 端口。
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/10042306.html
Copyright © 2011-2022 走看看