我有一个查询,它返回一个包含四个整数列的行。
select col1, col2, col3, col4 from myTable where id='xyz';
我应该从JdbcTemplate使用哪种查询方法,以及如何将值放在四个int变量中,例如int1,int2,int3,int4?
下面给出的rowMapper答案可能不适用于我的情况。因为我没有一个具有四个int属性的对象,我可以设置它。
我在一个方法中运行一个独立的查询,我想将返回的四列结果设置为四个整数,这四个整数是该方法的局部变量。
我想知道,这是通过JdbcTemplate ???
实现的以下代码是否有效?
List<String> result = this.jdbcTemplate.queryForObject(myQuery, List.class);
Iterator i = result.iterator();
String a = (String) i.next();
String b = (String) i.next();
String c = (String) i.next();
String d = (String) i.next();
答案 0 :(得分:0)
你看过documentation吗?
有一些不错的例子。查看query()
方法和RowMapper
类。
这是一个简单的例子:
//execute query
List<MyEntity> entityList = jdbcTemplate.query(myQuery, new MyRowMapper());
//myEntity is a representation of the rows in the table
for (MyEntity myEntity : entityList) {
int a = myEntity.getA();
int b = ...
//other getters
}
class MyEntity {
private int a;
private int b;
private int c;
private int d;
public void setA(int a) {
this.a = a;
}
public int getA() {
return a;
}
//other getters & setters
}
class MyRowMapper implements RowMapper<MyEntity> {
@Override
public MyEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
MyEntity myEntity = new MyEntity();
myEntity.setA(rs.getInt(0));
myEntity.setB(rs.getInt(1));
myEntity.setC(rs.getInt(2));
myEntity.setD(rs.getInt(3));
return myEntity;
}
}
答案 1 :(得分:0)
您可以使用queryForObject并使用rowMapper将行映射到您的对象。检查示例here。
要将结果映射到局部变量,请使用queryForList(String sql)。查看示例here。您将获得一个Object数组列表,您可以从中提取值到变量。