Seb*_*ian 6 java spring integration-testing unit-testing jdbctemplate
我用simpleJdbcTemplate将数据放入数据库.
simpleJdbcTemplate.update("insert into TABLE values(default)");
Run Code Online (Sandbox Code Playgroud)
我不想放任何数据,因为我不需要它用于我的单元测试目的.
如何从插入的行中获取id?我可以检索当前序列值,但如果其他人将执行插入,那么我将获得下一个序列值.
有没有办法使用simpleJdbcTemplate插入行并获取id?更新方法返回插入的行数,我想拥有id.谢谢您的帮助.
你找到答案了吗?如果没有,请尝试使用SimpleJdbcInsert.例如:
SimpleJdbcInsert sji = new SimpleJdbcInsert(dataSource)
.withTableName(TableName)
.usingColumns(new String[]{your columns})
.usingGeneratedKeyColumns(you auto-increment id colums);
Run Code Online (Sandbox Code Playgroud)
然后检索
sji.executeAndReturnKey(args).longValue();
Run Code Online (Sandbox Code Playgroud)
id您应该首先从适当的查询sequence,然后id在插入语句中提供它。就如此容易。
此外,我们可以将其称为集成测试,而不是单元测试。您可能想参考此 SO 线程来了解有关集成测试和 id 的想法。
[评论后编辑]
在这种情况下,请摆脱该触发器。并id在创建.sequenceinsert
好吧,您可以SELECT... FOR UPDATE在表上触发 a ,并获取最后一个id,然后将其增加 1。如果您的id不是连续的(我想情况并非如此),您可以保留ROWID, 特定于 Oracle AFAIK。然后查询id使用它。事实上,这一切都可以解决。
注意: 我强烈建议您查看 Aaron Digulla 的帖子。看看是否足够。
| 归档时间: |
|
| 查看次数: |
19198 次 |
| 最近记录: |