第一种,逐一完整定义每一个属性
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