比较两种Javabean的写法

第一种,逐一完整定义每一个属性

    private int ID_, CID_, MID_;
    private String CDATE, MDATE;
    private java.util.Date CDATE_, MDATE_;
    public void setID_(int data) {
       ID_ = data;
    }

    public int getID_() {
       return ID_;
    }

    public void setCID_(int data) {
       CID_ = data;
    }

    public int getCID_() {
       return CID_;
    }

    public void setMID_(int data) {
       MID_ = data;
    }

    public int getMID_() {
       return MID_;
    }

    public void setCDATE(String data) {
       CDATE = data;
    }

    public String getCDATE() {
       return CDATE;
    }

    public void setMDATE(String data) {
       MDATE = data;
    }

    public String getMDATE() {
       return MDATE;
    }

    public void setCDATE_(java.util.Date data) {
       CDATE_ = data;
    }

    public java.util.Date getCDATE_() {
       return CDATE_;
    }

    public void setMDATE_(java.util.Date data) {
       MDATE_ = data;
    }

    public java.util.Date getMDATE_() {
       return MDATE_;
    }

    private List<Org> recordsList;

    public List<Org> getRecordsList() {
       if (recordsList == null)
          buildRecordsList();
       return recordsList;
    }

构造函数

    public Org(int id, int cId, String cDate, int mId, String mDate,) {
       setID_(id);
       setCID_(cId);
       setCDATE(cDate);
       setMID_(mId);
       setMDATE(mDate);
    }

填充数据表

    public void buildRecordsList() {
       try {
          recordsList = new ArrayList<Org>();
          ...
          while (it.hasNext()) {
             Object obj[] = (Object[]) it.next();
             id = cId = mId = sq = 0;
             cDate = mDate = "";
             cDate_ = mDate_ = null;
             // 读取obj数据时,一定要确保obj不能为null
             if (obj[0] != null)
                id = Integer.valueOf(String.valueOf(obj[0]));
             if (obj[1] != null)
                cId = Integer.valueOf(String.valueOf(obj[1]));
             if (obj[2] != null) {
                java.sql.Timestamp t = (java.sql.Timestamp) obj[2];
                cDate_ = new java.util.Date(t.getTime());
                cDate = dtf.format(cDate_);
             }
             if (obj[3] != null)
                mId = Integer.valueOf(String.valueOf(obj[3]));
             if (obj[4] != null) {
                java.sql.Timestamp t = (java.sql.Timestamp) obj[4];
                mDate_ = new java.util.Date(t.getTime());
                mDate = dtf.format(mDate_);
             }
             recordsList.add(new Org(id, cId, cDate, mId, mDate));
          }
          it = null;
          ...
       } catch (Exception ex) {
          ex.printStackTrace();
       }
    }

第二种,不逐一定义属性,只定义一个Map<String,String>

    private Map<String, String> prop;

    public void setProp(Map<String, String> data) {
       prop = data;
    }

    public Map<String, String> getProp() {
       if (prop == null)
          prop = new HashMap<String, String>();
       return prop;
    }

    private List<Role> recordsList;

    public List<Role> getRecordsList() {
       if (recordsList == null)
          buildRecordsList();
       return recordsList;
    }

构造函数

    public Role(Map<String, String> data) {
       setProp(data);
    }

填充数据表

    public void buildRecordsList() {
       try {
          recordsList = new ArrayList<Role>();
          ...
          Iterator it = query.list().iterator();
          Map<String, String> p;
          while (it.hasNext()) {
             Object obj[] = (Object[]) it.next();
             p = new HashMap<String, String>();
             p.put("id", FunctionLib.getString(obj[0]));
             p.put("cId", FunctionLib.getString(obj[1));
             p.put("cDate", FunctionLib.getDateString(obj[2]));
             p.put("mId", FunctionLib.getString(obj[3]));
             p.put("mDate", FunctionLib.getDateString(obj[4]));
             recordsList.add(new Role(p));
          }
          it = null;
       } catch (Exception ex) {
          ex.printStackTrace();
       }
    }

第一种是非常传统的javabean写法,第二种是我自己变通的写法,原因是第一种定义属性比较麻烦,尤其是有属性增减的情况。而第二种虽然避免了这个问题,但是在性能上不如第一种,比如要将50万条记录填充到列表中时,第一种虽然慢点,但是可以执行完成,而第二种直接报内存溢出,测试过,25万条记录是可以填充的。

考虑到实际中基本上都是分页显示数据,一次填充列表的数据量并不大,所以我还是选择了第二种方法。

http://www.minioa.net/viewtopic.php?f=7&t=249


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值