【问题标题】:Fire Sequence.nextval query using jdbctemplate in spring在春季使用 jdbctemplate 触发 Sequence.nextval 查询
【发布时间】:2015-03-20 23:58:29
【问题描述】:

数据库:Oracle

我有一个表,其中有 10 列,我希望在插入行时对下一个值进行排序,并使用插入的序列号。

现在我已经搜索并发现 Spring 的 KeyHolder 很有用,但仅限于少于 8 个字段,所以我不能使用它。

如何使用jdbctemplate(NamedParameterJDBCTemplate) 触发"select MySequence.nextval from dual" 查询并获取序列?

还有其他方法可以实现获取插入的序列值吗?

【问题讨论】:

    标签: java database spring oracle jdbctemplate


    【解决方案1】:

    使用jdbctemplate,您可以将序列生成器作为值提及,例如

    jdbcTemplate.update("INSERT INTO TABLE (id, data) VALUES (MySequence.nextval, ?)", new Object[] { data });
    

    关于序列生成的注意事项:对于 Oracle 12c 之前的版本,您应该有一个触发器,它将为您增加序列。从 12c 开始,您可以使用自动增量功能。

    【讨论】:

      【解决方案2】:

      您可以像这样使用 JdbcTemplate 来实现:

      final SqlRowSet sqlRowSet = jdbcTemplate.queryForRowSet(NEXT_VALUE_QUERY);
        sqlRowSet.next();// mandatory to move the cursor 
        sqlRowSet.getLong(1);// the value of the nextval
      

      【讨论】:

        猜你喜欢
        • 2017-08-11
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多