JdbcTemplateクエリを使用してテーブルから1つの文字列を取得する方法を見つけることができないようです。これは私のSQLが返すテーブルです:
ID | STREET_NAME
------------------------
1 | Elm street
さて、STREET_NAMEの値を取得する方法を教えてください。 SQLは常に1行を返すため、複数の行を返すことを心配する必要はありません。
背景情報の一部: 同じクエリの内部結合とカウント
Tony Starkの回答を使用してテーブルを取得します。
しかし、どうすればJdbcTemplateを使用して「Elm street」を抽出できますか?
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;
}
テーブル(または結合を含むクエリ)から1つの列「文字列」のみを取得する場合は、列の名前を言う必要があります。
SELECT * FROM TABLEの使用は、非常に悪い習慣です。これをしたに違いない。
@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;
}