выполнение запроса через jdbctemplate - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть запрос, который возвращает одну строку с четырьмя целочисленными столбцами.

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 голосов
/ 21 декабря 2011

Вы можете использовать queryForObject и отобразить строки в ваш объект, используя rowMapper. Проверьте образец здесь .

Чтобы отобразить результат в локальные переменные, используйте queryForList (String sql). См. Пример здесь . Вы получите список массивов объектов, из которого вы можете извлекать значения в свои переменные.

0 голосов
/ 21 декабря 2011

Вы смотрели документацию ?

Есть несколько хороших примеров. Взгляните на метод 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;
    }
}
...