Использование 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;
}