使用Spring JdbcTemplate提取一个字符串

问题描述 投票:13回答:2

似乎找不到使用JdbcTemplate查询从表中获取一个字符串的方法。这是我的sql返回的表:

ID | STREET_NAME
------------------------
1  | Elm street

现在我应该如何获得STREET_NAME的价值。 SQL总是返回一行,因此不必担心会返回多于一行。

有关一些背景信息:INNER JOIN and COUNT in the same query

使用托尼·斯塔克的答案来得到我的桌子。

但是如何使用JdbcTemplate从中提取“榆树街”?

java sql hsqldb jdbctemplate
2个回答
33
投票

知道您的SQL查询的样子会很有帮助,但假设它类似于SELECT STREET_NAME FROM table WHERE ID=1;

CODE:

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;
}

5
投票

如果您只想从表中获得一个列“字符串”(或任何具有联接的查询,则必须说出列的名称。

顺便说一下,

使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.