zoukankan      html  css  js  c++  java
  • 【spring data jpa】jpa中criteria拼接in查询

     示例代码:

    public static Specification<GoodsType> where(final GoodsType goodsType){
            
            
            return new Specification<GoodsType>() {
                
                @Override
                public Predicate toPredicate(Root<GoodsType> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                    
                    List<Predicate> predicates = new ArrayList<Predicate>();  
                    //名字+拼音
                    String name = goodsType.getName();
                    if(StringUtils.isNotBlank(name)){
                        Predicate like1 = cb.like(root.<String>get("name"), "%" + name +"%");
                        Predicate like2 = cb.like(root.<String>get("pyAll"), "%" + PingYinUtil.getPingYin(name) +"%");
                        Predicate like3 = cb.like(root.<String>get("pyHead"), "%" + PingYinUtil.getPinYinHeadChar(name) +"%");
                        predicates.add(cb.or(like1,like2,like3));
                    }
                    
                    //uid
                    String uid = goodsType.getUid();
                    if(StringUtils.isNotBlank(uid)){
                        predicates.add(cb.equal(root.<String>get("uid"),uid));
                    }
                    
                    //parentUid
                    String parentUid = goodsType.getParentUid();
                    if(StringUtils.isNotBlank(parentUid)){
                        predicates.add(cb.equal(root.<String>get("parentUid"),parentUid));
                        
                    }
                    //启用 状态
                    Integer enabledFlag = goodsType.getEnabledFlag();
                    if (enabledFlag != null){
                        predicates.add(cb.equal(root.get("enabledFlag"),enabledFlag));
                    }
    
                    //层级
                    Integer floor = goodsType.getFloor();
                    if (floor != null){
                        predicates.add(cb.equal(root.get("floor"),floor));
                    }
                    
                    //对外编码
                    String outerCode = goodsType.getOuterCode();
                    if(StringUtils.isNotBlank(outerCode)){
                        
                        predicates.add(cb.equal(root.<String>get("outerCode"),outerCode));
                    }
                    //对外id
                    String outerId = goodsType.getOuterId();
                    if(StringUtils.isNotBlank(outerId)){
                        predicates.add(cb.equal(root.<String>get("outerId"),outerId));
                    }
                    
                    //租户ID
                    String tid = goodsType.getTenementId(); 
                    if(StringUtils.isNotBlank(tid)){
                        predicates.add(cb.equal(root.<String>get("tenementId"),tid));
                    }
                    
                    String typeUidArrStr = goodsType.getTypeUidArrStr();
                    if (StringUtils.isNotBlank(typeUidArrStr)) {
                        In<String> in = cb.in(root.<String>get("parentUid"));
                        String[] split = typeUidArrStr.split(",");
                        for (String string : split) {
                            in.value(string);
                        }
                        predicates.add(in);
                    }
                    
                    
    
                    //未被删除 且  启用状态无视
                    predicates.add(cb.equal(root.get("delFlag"),GoodsType.DEL_FLAG_EXIST));
                    
                    return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
                }
            };
            
        }
  • 相关阅读:
    板邓:mysql navicat设置字段默认时间为当前时间
    板邓:wordpress用户和权限名称详细表
    板邓:jQuery设置和获取HTML、文本和值(转)
    板邓:wordpress自定义用户角色和权限全面解析
    板邓:wordpress给订阅者、投稿者上传图片权限
    七牛云
    redis 基础命令
    yeild 理解
    如何访问父类中私有的属性
    php反射
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9625797.html
Copyright © 2011-2022 走看看