【发布时间】:2019-12-20 09:08:15
【问题描述】:
我正在使用 SpringBoot 和 jdbc 模板并在获取一些重复数据的地方执行批量插入。我想忽略重复的行,系统应该继续插入,但我遇到异常并且插入被回滚。我怎样才能继续进行数据插入,保留重复的行。
使用下面的代码插入。
jdbcTemplate.execute(insertCommand);
【问题讨论】:
-
检查数据如果不存在 -> 插入或者你可以使用
INSERT ... ON DUPLICATE KEY UPDATE ...作为你的插入命令(更新上次更新) P/s:不应该使用 INSERT IGNORE ....,不仅是重复的键忽略 -
如果不存在则插入是最好的方法。但是,我在这里会有一个模糊的解决方案。那将在您的事务注释中,您可以使用 dontrollbackon 参数。例如@Transactional(dontRollbackOn = DuplicateKeyException.class)。不过我还没有测试过。
标签: java spring-boot sql-insert jdbctemplate