当前位置: 首页 > 面试题库 >

通过jdbctemplate从SQL插入的身份

邵飞白
2023-03-14
问题内容

在Spring jdbc模板调用中,是否可以从SQL插入中获取@@ identity?如果是这样,怎么办?


问题答案:

JDBCTemplate.update方法已重载,以获取一个名为GeneratedKeyHolder的对象,您可以使用该对象来检索自动生成的密钥。例如(从此处获取的代码):

final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
    new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            PreparedStatement ps =
                connection.prepareStatement(INSERT_SQL, new String[] {"id"});
            ps.setString(1, name);
            return ps;
        }
    },
    keyHolder);
// keyHolder.getKey() now contains the generated key


 类似资料:
  • 问题内容: 在Spring jdbc模板调用中,是否可以从SQL插入中获取@@ identity?如果是这样,怎么办? 问题答案: 该方法已重载,以获取一个称为GeneratedKeyHolder的对象,你可以使用该对象来检索自动生成的密钥。例如:

  • 问题内容: 想通过一个简单的 sql 脚本(例如填充测试数据库)将文件插入到 BLOB 字段中。我知道如何通过代码做到这一点,但我找不到如何执行 sql 脚本本身。 我试图通过路径,即 但这失败了。 在代码中(例如 java),很容易创建一个 File 对象并将其传入,但是直接从 sql 脚本中,我被卡住了...... 任何想法? 问题答案: 为了测试,您可以插入文字十六进制字节或使用该函数,如下

  • 我遇到了一个奇怪的问题,使用Oracle Pivot语法的sql查询。我可以毫无问题地在SqlDeveloper中运行查询;然而,使用行映射器通过JdbcTemplate运行它会产生关于无效列名的奇怪错误。 SQL语句: 行映射器: DAO调用类:

  • 问题内容: 是否可以通过Jdbc模板在SQL查询中生成任意“ in()”列表: 例: “从t中选择*,其中c在(#)中”,但是’#’可以是仅在运行时才知道的任意值列表。 问题答案: 是的,如果你使用使用命名参数,则可能在Spring中。List参数可以设置为: 在这种情况下,当使用s 替换命名参数时,Spring会根据实际列表的大小在内部使用所需数量的占位符创建SQL查询。

  • 问题内容: 如何使用在mySQL上运行的JdbcTemplate以可扩展的方式执行以下SQL 。在这种情况下,可伸缩意味着: 服务器上仅执行一条SQL语句 它适用于任何数量的行。 声明如下: 假设我有一个带有和字段的POJO列表。我意识到我可以遍历列表并执行: 但这并不能满足第一个条件。 我相信我也可以执行: 但是据我所知,这只会编译一次SQL并多次执行它,从而再次使第一个条件失败。 似乎通过了这

  • 问题内容: 我们一直在使用临时表在pl / sql存储过程中存储中间结果。谁能说出通过pl / sql进行批量收集插入与普通的SQL插入之间是否存在性能差异。 插入[表名] [选择查询返回大量数据] 或者 [选择返回大量数据的查询]的游标 打开游标 获取游标批量收集到集合中 使用FORALL执行插入 以上2个选项中的哪一个更适合插入大量临时数据? 问题答案: 针对您的问题的一些实验数据(Oracl