在Spring中使用jdbctemplate进行Fire Sequence.nextval查询

时间:2015-01-22 08:56:16

标签: java database spring oracle jdbctemplate

数据库:Oracle

我有一个表,其中有10列,我想在插入行时使用序列下一个值,并且还使用插入的序列号。

现在我已经搜索过并发现Spring的KeyHolder非常有用但仅限于少于8个字段,所以我无法使用它。

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

获取插入序列值的其他方法是什么?

2 个答案:

答案 0 :(得分:4)

使用jdbctemplate,您只需将序列生成器提及为值,例如

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

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

答案 1 :(得分:3)

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

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