用map存储实体类的理解

package com.itcast.core.message;


import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;


import org.apache.activemq.command.ActiveMQTextMessage;
import org.springframework.beans.factory.annotation.Autowired;


import com.itcast.core.pojo.Product;
import com.itcast.core.pojo.SuperPojo;
import com.itcast.core.service.ProductService;
import com.itcast.core.service.StaticPageService;


import freemarker.template.TemplateException;


/**
 * 自定义消息监听类
 * 
 * @author 程军
 *
 */
public class MyMessageListener implements MessageListener {
@Autowired
private StaticPageService staticPageService;


@Autowired
private ProductService productService;


/**
* 当监听到消息后,会自动调用此方法
*/
@Override
public void onMessage(Message message) {
// TODO Auto-generated method stub
ActiveMQTextMessage amessage = (ActiveMQTextMessage) message;
try {
String ids = amessage.getText();
System.out.println("cms消费方接收到的消息:" + ids);


// 从ids中遍历出id
String[] split = ids.split(",");
for (String id : split) {


Long productId = Long.parseLong(id);


SuperPojo superPojo = productService.findById(productId);


Product product = (Product) superPojo.get("product");
List skus = (List) superPojo.get("skus");


System.out.println("商品名称:" + product.getName());
System.out.println("库存数量:" + skus.size());


// 去除颜色重复 将原有的map变成能够支持Freemarker
Set<SuperPojo> colors = new HashSet<SuperPojo>();


for (Object object : skus) {
SuperPojo sku = (SuperPojo) object;


// 定义颜色对象
SuperPojo color = new SuperPojo();
color.setProperty("id", sku.get("color_id"));
color.setProperty("name", sku.get("name"));


// 将颜色对象添加到hm集合中,利用hm集合来去除重复
colors.add(color);
}


// 反正万能实体对象要被传递,将非重复的颜色对象也通过superPojo顺便传递到页面
superPojo.setProperty("colors", colors);


HashMap hashMap = new HashMap();
hashMap.put("superPojo", superPojo);


// 开始静态化
staticPageService.staticProductPage(hashMap, id);


}


} catch (JMSException | IOException | TemplateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这里的superPojo是一个map集合,具体的实现用到的是treemap,因为存储是有顺序的,所以更方便查找

但是存储在superPojo里面的实体类,却只是披着实体类的外衣,本质上一张表.

在新建实体类的时候,一般都是和数据库中表的字段一一对应的.可是取名字还是有些区别,比如说color_id 这个是数据库中的字段名称,colorId 这个是实体类中的字段名称.

在数据回显到页面的时候,一般的是类名.字段名称,例如 库存sku 里面颜色字段color 那回显就是sku.color 

一定一定记住,存储到superPojo里面的实体类不是真的实体类,而是一张表 所以用于回显的写法是    sku.color_id

因为这个原因一直犯错,其实根本原因没有理解到superPojo里面存储的是一张表,和实体类的字段没有任何关系了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值