实体类插入list有关问题
实体类插入list问题public List bankSelect() {List list new ArrayList()bank a new bank()try {Co
实体类插入list问题
public List bankSelect() {
List list = new ArrayList();
bank a = new bank();
try {
ConnBean c = new ConnBean();
dbConn = c.conn();
stmt = dbConn.createStatement();
String sql = "select * from tb_client_bank ";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
a.setid(Integer.parseInt(rs.getString(1)));
a.set_bank_name(rs.getString(2));
a.set_bank_bz(rs.getString(3));
list.add(a);
}
}
catch (SQLException e) {
e.printStackTrace();
}
return list;
}
bank是我的实体类。上层servlet调用这个方法的时候会把list加到request对象里以便页面输出
假如库里有4条数据吧。我这个方法现在的结果是吧最后一条数据输出了4遍。。而不是每条数据遍历输出。
高手指点下怎么遍历呢???
还是说用实体类的话就没法达到这个目的?
大虾指点啊~~~~~~~~~
[最优解释]
public List bankSelect() {
List list = new ArrayList();
try {
ConnBean c = new ConnBean();
dbConn = c.conn();
stmt = dbConn.createStatement();
String sql = "select * from tb_client_bank ";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
bank a = new bank();
a.setid(Integer.parseInt(rs.getString(1)));
a.set_bank_name(rs.getString(2));
a.set_bank_bz(rs.getString(3));
list.add(a);
}
}
catch (SQLException e) {
e.printStackTrace();
}
return list;
}这样就O了, 你那样只有a一个对象,当然就出现你那个结果了
[其他解释]说错了,就只有一个实体。java中只要是自己定义的对象都需要new一个的。才能是新的实体。
[其他解释]自己顶下~~~~~~~救命啊~~~~~~~~~~~~~~~~~~~~~~~~~~~
[其他解释]太帅了~正解~~~
不过想问问为什么。我觉得在外边定义,每次循环回来的时候都会用新值覆盖原来的,为啥每次都要从新定义这个实体对象呢?能帮解释下吗~~~
[其他解释]
通俗点说吧 相当于你给一个对象赋值了四次 你说这个对象现在的值是什么(当然是最后一次的值了)
list.add()就加了四次你最后赋的那个值。而你每次new一个对象又不一样了,这时有四个对象,每个对象都有自己的值。道理就是这么简单!
[其他解释]那实体类这种东西是只能存1条记录还是能存多条记录?
[其他解释]我第一次做毕业设计也是这样。a引用的是同一个对象。而list里面是可以存相同的对象的。如果用其他的结合如vector,可能就会提示一下你,不至于出错。。
[其他解释]不是能存几条的问题。是集合存的同一个对象的问题。
[其他解释]有点晕。。
第一次把第一条数据存到实体类。完了放到list里
第二次吧用新的rs(第二条)数据覆盖这个实体对象的内容,放到list里
……
我的这个理解对吗?
[其他解释]是覆盖了这个实体的内容。但a是同一个实体啊。4个实体引用的同一个,也就是最后一个实体。
[其他解释]正解
[其他解释]对啊。就是一个实体。
那我就定义一个a的话第二次set完了放到list里这个过程是怎么个情况。,
它应该就吧第二条加进去啊。。怎么还把第一条覆盖了
[其他解释]关注一下,不知道