我想从MySQL获取数据而不从类
创建对象通常我会做类似
的事情public ArrayList getInventoryByItemId(String ItemId) throws SQLException {
ArrayList list = new ArrayList<Inventory>();
String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'";
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(sql);
while (rset.next()) {
a = new Inventory(rset.getInt(1), rset.getInt(2), rset.getString(3), rset.getString(4), rset.getTimestamp(6), rset.getString(7), rset.getString(8));
list.add(a);
}
return list;
}
问题是因为Inventory
对象没有来自加入的用户表的用户数据,我无法创建新的Inventory
。
我只想自动创建一个具有所有数据属性的对象,我可以使用列名访问它。
谢谢
答案 0 :(得分:2)
如果我遇到问题,
您可以创建新地图(HashMap I reccomend)并使用列名或索引作为键来放置值。 因此,您的列表将是地图列表。
while (rset.next()) {
a = new HashMap<Integer,Object>();
a.put(1,rset.getInt(1));
..........
list.add(a);
}
或者,如果您知道确切的列数,则可以使用用户数组而不是Map(它会更快)
答案 1 :(得分:0)
根据您所说的内容,我认为您的查询不会返回数据,因为库存中没有与其连接的用户数据。您需要修改查询以使用左外连接。
String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i LEFT JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'"
这将允许您的查询返回库存数据,即使相应的用户数据不存在。