使用带有Spring的JDBC模板的一个ResultSet中的多个对象

时间:2018-11-13 01:52:44

标签: java sql spring resultset spring-jdbc

rs结果如下:

Order(id=1, orderNumber=A1, orderRows=[OrderRow(itemName=Motherboard, quantity=0, price=5), OrderRow(itemName=Cpu, quantity=5, price=0)])

现在我想同时获得两个OrderRows

private RowMapper<Order> getPostRowMapper() {
    return (rs, rowNum) -> {
        Order order = new Order();
        order.setId(rs.getLong("id"));
        order.setOrderNumber(rs.getString("ordernumber"));
        System.out.println("quan" + rs.getString("quantity")); // Prints 0
        System.out.println("quan" + rs.getString("price")); // Prints 5
        System.out.println("quan" + rs.getString("quantity")); // Prints 0 (should print 5)

        return order;
    };
}

如果我可以以某种方式分离a loop的话,如果可以在OrderRows中这样做,这就是我会这样做的方式:

//For the first iteration
if(resultSet.getString("itemname") != null){
    order.add(new OrderRow(resultSet.getString("itemname"),
            resultSet.getInt("quantity"), resultSet.getInt("price")));
}
while (resultSet.next()){
    if(resultSet.getString("itemname") != null){
        order.add(new OrderRow(resultSet.getString("itemname"),
                resultSet.getInt("quantity"), resultSet.getInt("price")));
    }
}

我有两个Objects,一个是Order,另一个是OrderRow。是否可以在一个RowMapper和一个Order/OrderRow中创建多个对象,或者我是否需要多个请求?

或者我可以以某种方式遍历结果集中的所有OrderRows并将其添加到迭代中的OrderRow对象中吗?

0 个答案:

没有答案