使用BeanPropertySqlParameterSource和sequence插入多行以生成ID

时间:2014-04-02 09:08:20

标签: spring oracle jdbc

我确信之前必须在论坛上提出这个问题。但我无法找到它。如果您发现它重复,请将我重定向到特定的帖子。

我使用Spring JDBC和BeanPropertySqlParameterSource在oracle DB中插入记录。在插入记录之前,会调用序列来获取主键的值。

这就是我的方法的样子

public void insertTransaction(InTransaction transaction) {
        Long txnId = getNextId(TXN_SEQUENCE);
        transaction.setTxnId(txnId);
        jdbcTemplate.update(getQuery(TXN_INSERT_QUERY),
                new BeanPropertySqlParameterSource(transaction));
}

getQuery方法从文件中获取查询字符串,getNextID方法在序列上调用NEXTVAL。

我需要修改此方法,以便可以一起插入多行。我查看了batchUpdate方法,但这需要包含主键的每个列的值填充在要批量插入的所有对象中。在调用batchUpdate之前,我无法获得如何调用所有行的序列?任何人都可以请帮助。

1 个答案:

答案 0 :(得分:0)

如果您创建与批量上传相同大小的数组,该怎么办?然后通过调用seq nextval填充此数组,并在batchUpdate中使用此astray。 或者,如果batchupdate可以占用整行,那么您可以创建一个二维数组。填充nextval并从文件中查询字符串。然后将其传递给批量函数。这样,您就可以在单个事务中插入多个类型。