将 左外连接 后查询的对象 转成自定义对象

本文介绍了一种将SQL左外连接查询结果转换为自定义Java对象的方法,通过具体实例展示了如何从查询结果中提取所需字段并映射到自定义对象上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

将 左外连接 后查询的对象 转成自定义对象

 

 

@Override

         public List<TempProductAttributeInfoEntity>getAttributeInfoByProductId(String productIds,String productCategoryId) {

            List<TempProductAttributeInfoEntity>tempProductAttributeInfoEntities = new ArrayList<>();

            List<String> objAttrIdList = newArrayList<>();

            List<String> prodAttrIdList = newArrayList<>();

            StringBuilder pSB = new StringBuilder();

           ProductCategoryEntity productCategoryEntity = this.getEntity(ProductCategoryEntity.class,productCategoryId);

           

            String[]productAttributeIds = productCategoryEntity.getProductAttributeIds().split(",");

           

            for (int i = 0; i < productAttributeIds.length; i++) {

                if(i != productAttributeIds.length - 1)

                {

                   pSB.append("'").append(productAttributeIds[i]).append("'").append(",");

                }else{

                   pSB.append("'").append(productAttributeIds[i]).append("'");

                }

            }

           

           

            //得到的是Object对象 不是自定义的对象

            List<Object> tempObjList =

                 findListbySql("select b.id as id,a.id as attribute_id,b.product_attribute_valueas product_attribute_value,a.attribute_name as attribute_name fromproduct_attribute a left join product_infomation b on (a.id =b.product_attribute_id) where b.product_id = '"+productIds+"'");

            if(tempObjList != null && tempObjList.size()>0){

            for (int i = 0; i < tempObjList.size(); i++) {


//所以这里需要转成自定义对象          

Object[] obj = (Object[])tempObjList.get(i);

                String id = (String) obj[0];

                String attributeId = (String) obj[1];

                objAttrIdList.add(attributeId);

                String productAttributeValue = (String) obj[2];

                String attributeName = (String) obj[3];

               

                TempProductAttributeInfoEntity attributeInfoEntity = newTempProductAttributeInfoEntity();

                attributeInfoEntity.setId(id);

                attributeInfoEntity.setAtttributeId(attributeId);

               attributeInfoEntity.setProductAttributeValue(productAttributeValue);

                attributeInfoEntity.setAttributeName(attributeName);

                tempProductAttributeInfoEntities.add(attributeInfoEntity);

               

               

            }

            }

           

            List<ProductAttributeEntity> attributeList =findByQueryString("FromProductAttributeEntity WHERE id IN ("+pSB.toString()+")");

            if(attributeList != null && attributeList.size()>0){

                for (ProductAttributeEntity productAttributeEntity :attributeList) {

                   prodAttrIdList.add(productAttributeEntity.getId());

                }

            }

           

            if(attributeList.size() != tempObjList.size()){

                for(String tempAttributeId : objAttrIdList){

                prodAttrIdList.remove(tempAttributeId);

                }

               

                for (String attributeId : prodAttrIdList) {

                   for (ProductAttributeEntity productAttributeEntity :attributeList) {

                      if(productAttributeEntity.getId().equals(attributeId) ){

                         TempProductAttributeInfoEntityattributeInfoEntity = new TempProductAttributeInfoEntity();

                         attributeInfoEntity.setId(UUID.randomUUID().toString());

                         attributeInfoEntity.setAtttributeId(attributeId);

                         attributeInfoEntity.setProductAttributeValue(" ");

                      attributeInfoEntity.setAttributeName(productAttributeEntity.getAttributeName());

                         tempProductAttributeInfoEntities.add(attributeInfoEntity);

                      }

                   }

                }

            }

            return tempProductAttributeInfoEntities;

           

         }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值