String sql ="select * from shop_something ";
ResultSet re = db.query(sql);
ResultSetMetaData md =re.getMetaData();
dish some= new dish();
ArrayList<dish> list= new ArrayList();
while(re.next())
{
some.setId(re.getString("id"));
some.setCatelog_id(re.getString("Catelog_id"));
some.setDescribe(re.getString("describe"));
some.setImge(re.getString("image"));
some.setName(re.getString("name"));
some.setPrice(re.getFloat("price"));
some.setSupplier(re.getString("supplier"));
list.add(some);
}
for(dish ds:list)
{
System.out.print(" "+ds.getId()+"hello");
}
有两个对象 对象里分别有id11 和id22 两个属性
以上代码 使用 for each 输出的结果 只有两个id22
这是为什么
另外有没有更好 的方法来访问数据库并封装到list表中? 使用反射的话可以详细讲解吗? 谢谢!
输出2个id22的原因是:你只创建了一个dish对象。而list中保存dish,保存的是该对象的引用。
想正确存储,你可以讲代码
dish some= new dish();
放到
while(re.next())
这个while循环的里面。
至于较好的方法,随便进个公司,都会有封装好的现成的方法吧,不仅要保存数据,还要保存字段名称、字段类型等。
支持楼上的回答;
ResultSet这是Java语言的吧?被框架封装的我看到这个都感觉很陌生。
如果你有使用spring,直接使用jdbc template,可以直接属性映射
一楼的说法是对的,至于DAO的封装,Hibernate,Mybatis都是不错的选择