将 左外连接 后查询的对象 转成自定义对象
2016-06-13 14:47
369 查看
将 左外连接 后查询的对象 转成自定义对象
@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;
}
相关文章推荐
- git和TortoiseGit使用
- Android开发中关于“invalid symbol”的错误
- 快启动U盘在GPT分区下安装win7x64位系统教程
- 3Sum
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 磁盘调度算法
- Java使用Socket读写邮件服务器示例
- JAVA CLOB作为参数传给ORACLE后台
- 手机端页面自适应解决方案-rem布局
- GCC 编译详解
- 10进制整型转16进制整型?
- [置顶] 常用的数据标准化方法
- Android APP被关闭后无法收到推送消息(尝试)
- SVN版本控制与分支设置
- BZOJ3158 千钧一发
- WindowManager.LayoutParams.type属性
- bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验
- 【3】Java并发编程:多线程基本概念
- BI商务智能对于企业的意义
- 找工作 准备