【问题标题】:How to bypass JDBCTemplate org.springframework.dao.DuplicateKeyException如何绕过 JDBCTemplate org.springframework.dao.DuplicateKeyException
【发布时间】: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


【解决方案1】:

使用下面的 SQL,它不会对重复的键条目执行任何操作

INSERT ... ON DUPLICATE KEY UPDATE key_column = key_column

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多