通过jdbctemplate运行查询

时间:2011-12-21 12:27:25

标签: java spring jdbctemplate

我有一个查询,它返回一个包含四个整数列的行。

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();

2 个答案:

答案 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数组列表,您可以从中提取值到变量。