在Java中如何在不从类创建对象的情况下获取MySQL数据

在Java中如何在不从类创建对象的情况下获取MySQL数据,java,mysql,jdbc,Java,Mysql,Jdbc,我想从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 FR

我想从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;
}
public ArrayList getInventoryByItemId(String ItemId)抛出SQLException{
ArrayList=新建ArrayList();
String sql=“选择iid,i.uid,item_数据,item_id,i.ctime,用户名,性别,从库存中我加入用户u,i.uid=u.uid,其中item_id='“+ItemId+”;
语句stmt=con.createStatement();
ResultSet-rset=stmt.executeQuery(sql);
while(rset.next()){
a=新库存(rset.getInt(1)、rset.getInt(2)、rset.getString(3)、rset.getString(4)、rset.getTimestamp(6)、rset.getString(7)、rset.getString(8));
列表.添加(a);
}
退货清单;
}
问题是因为
Inventory
对象没有来自联接用户表的用户数据,我无法创建新的
Inventory

我只想自动创建一个包含所有数据属性的对象,我可以使用列名访问它

谢谢你

如果我有你的问题

您可以创建新映射(HashMap I reccomend)并使用列名或索引作为键放置值。 因此,您的列表将是地图列表

 while (rset.next()) {
        a = new HashMap<Integer,Object>();
        a.put(1,rset.getInt(1));
        ..........
        list.add(a);
    }
while(rset.next()){
a=新的HashMap();
a、 put(1,rset.getInt(1));
..........
列表.添加(a);
}

或者,如果您知道确切的列数,您可以使用用户数组而不是映射(这样会更快)

根据您所说的,我认为您的查询没有返回数据,因为库存没有与其关联的用户数据。您需要修改查询以使用左外部联接

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+"'"

这将允许您的查询返回库存数据,即使相应的用户数据不存在。

从您的问题来看,您的主要问题是
sql
由于未满足联接条件而未返回任何记录。是吗?列表应该是什么类型?我试过HashMap list=newhashmap(),但它说add(HashMap)不是goodList list=newarraylist();它使用以下ArrayList=new ArrayList();非常感谢你!您可以在以后阅读本文,建议使用泛型。对不起,我误解了这个问题。您可以使用HashMaps只存储列数据。