3 回答
TA贡献1866条经验 获得超5个赞
我找到了解决方案......这个例子与另一个实体,但它有效!
String sqlSelectQuery = "SELECT name, email, address, telephone FROM contact";
52
List listContacts = jdbcTemplateObj.query(sqlSelectQuery, new RowMapper() {
53
public Contact mapRow(ResultSet result, int rowNum) throws SQLException {
54
Contact contactObj = new Contact();
55
contactObj.setName(result.getString("name"));
56
contactObj.setEmail(result.getString("email"));
57
contactObj.setAddress(result.getString("address"));
58
contactObj.setPhone(result.getString("telephone"));
59
return contactObj;
60
}
61
});
62
63
// Displaying The SQL Records
64
for (Contact contactDetail : listContacts) {
65
System.out.println(contactDetail.toString());
66
}
67
TA贡献1845条经验 获得超8个赞
似乎问题在于对 RowMapper 的理解。
由于 Jdbc 不知道您希望如何将行映射到对象,因此它会要求您提供映射。所以 RowMapper 的唯一责任是提供这个映射。没有其他的。在mapRow下面更改您的喜欢。
public Customer mapRow(ResultSet rs, int arg1) throws SQLException {
Customer customer = null;
if (rs.getString("ID") != null){
customer = new Customer()
customer.setEtpId(rs.getString("ID"));
......
......
}
return customer;
}
JdbcTemplate 将应用此映射器来映射具有对象的行。如果您有多行,它将Customer使用此 rowMapper将所有行转换为s的列表。JdbcTemplate 将透明地执行此操作,因此您无需担心。
编辑:
编辑后,您解释说您需要来自purchases表的给定客户的购买信息列表。对于这种情况,您实际上需要一个PurchaseRowMapper. 这将purchases使用名为 (maybe) 的类映射表中的记录PurchaseInformation。这将返回一个PurchaseInformation对象列表。
TA贡献2036条经验 获得超8个赞
Rowmapper 实现:
public class CustomerMapper implements RowMapper<Customer>{
List<Customer> customerList = new ArrayList<Customer>();
public Customer mapRow(ResultSet rs, int arg1) throws SQLException {
Customer customer = new Customer();
while (rs.next()) {
if (rs.getString("ID") != null)
customerList.add(rs.getString("ID"));
}
customer.setEtpId(customerList);
return customer;
}
}
添加回答
举报