Java 使用 Spring JdbcTemplate 提取一个字符串

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29286725/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 07:44:51  来源:igfitidea点击:

Using Spring JdbcTemplate to extract one string

javasqlhsqldbjdbctemplate

提问by lkallas

Can't seem to find a way to get one string from table using JdbcTemplate query. This is the table my sql returns:

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

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

Now how am I supposed to get the value of STREET_NAME. SQL always returns one row, so no need to worry about returning more than one row.

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

For some background info: INNER JOIN and COUNT in the same query

有关一些背景信息: 同一查询中的 INNER JOIN 和 COUNT

Using Tony Stark answer to get my table.

使用 Tony Stark 的答案来获取我的桌子。

But how can I extract "Elm street" from it using JdbcTemplate?

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

采纳答案by jlewkovich

It would help a lot to know what your SQL query looks like, but assuming it's something like SELECT STREET_NAME FROM table WHERE ID=1;

了解您的 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;
}

回答by Laszlo Lugosi

If you want to get only one column "string" from your table (or any query with joins), you have to say the name of the column.

如果您只想从您的表(或任何带有连接的查询)中获取一列“字符串”,您必须说出该列的名称。

Using SELECT * FROM TABLEis a very-very bad practice by the way. I bet you did this.

顺便说一下,使用SELECT * FROM TABLE是一种非常非常糟糕的做法。我打赌你这样做了。

@JLewkovich modified code:

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

But what if there is 0 or more than one result? Think about it!

但是如果有 0 个或多个结果呢?想一想!

But to getting a sequence value (in Oracle), this should work.

但是要获得序列值(在 Oracle 中),这应该可行。

public Long getSequence() {
  Long seq;
  String sql = "select SEQ_XY.NEXTVAL from dual";
  seq = jdbcTemplateObject.queryForObject(sql, new Object[] {}, Long.class);
  return seq;
}