Использование Spring JdbcTemplate для извлечения одной строки
не удается найти способ получить одну строку из таблицы с помощью запроса JdbcTemplate. Это таблица, которую возвращает мой sql:
ID | STREET_NAME
------------------------
1 | Elm street
теперь, как я должен получить значение STREET_NAME. SQL всегда возвращает одну строку, поэтому не нужно беспокоиться о возврате более одной строки.
кое-какая информация: внутреннее соединение и подсчет в одном запросе
используя ответ Тони Старка, чтобы получить мой стол.
но как я могу извлечь " Elm street" с помощью JdbcTemplate?
2 ответов
было бы полезно узнать, как выглядит ваш SQL-запрос, но предполагая, что это что-то вроде SELECT ID,STREET_NAME FROM table WHERE ID=1;
код:
public String getStreetNameById(int id) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT ID,STREET_NAME FROM table WHERE ID=?";
String streetName = (String) jdbcTemplate.queryForObject(
sql, new Object[] { id }, String.class);
return streetName;
}
Если вы хотите получить только один столбец "string" из своей таблицы (или любой запрос с соединениями), вы должны сказать имя столбца.
используя ВЫБЕРИТЕ * ИЗ ТАБЛИЦЫ это очень-очень плохая практика, кстати. Держу пари, это сделал ты.
@JLewkovich измененный код:
public String getStreetNameById(int id) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT STREET_NAME FROM table WHERE ID=?";
String streetName = (String) jdbcTemplate.queryForObject(
sql, new Object[] { id }, String.class);
return streetName;
}
но что, если есть 0 или более одного результата? Подумай об этом!
но для получения значения последовательности (в Oracle) это должно работать.
public Long getSequence() {
Long seq;
String sql = "select SEQ_XY.NEXTVAL from dual";
seq = jdbcTemplateObject.queryForObject(sql, new Object[] {}, Long.class);
return seq;
}