使用JdbcBatchItemWriter更新重复键

spring批量为我的项目,我只是尝试从csv文件读取并将数据加载到数据库,使用JdbcBatchItemWriter作为编写器。

我正在寻找一种方法来告诉编写器插入一个新行,但是,在重复键(或重​​复的唯一标识符)更新行而不是失败。

我知道我可以直接在sql语句中执行此操作,但这将特定于Mysql,但我希望我的代码与DBMS无关。

这是我在java配置中的编写器声明

@Bean @StepScope public ItemWriter writerHeadingCollectionsToDb(DataSource datasource) { String sqlStatement = "INSERT INTO abcd(id, first_name, last_name, phone_number" + "VALUES (:id, :firstName, :lastName, :phoneNumber)"; JdbcBatchItemWriter itemWriter = new JdbcBatchItemWriter(); itemWriter.setSql(sqlStatement ); itemWriter.setDataSource(dataSource); itemWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider()); return itemWriter; } 

在此先感谢您的帮助

这很简单:
编写自定义ItemWriter<>并在write()方法中执行插入操作,如果重复,则执行更新; 检查dup键是否使用查找或重复的exceptioncatch。