首页 > 解决方案 > java - 如何在使用JdbcBatchItemWriter的春季批处理中参数为null / 0时跳过更新

问题描述

我们有一个场景,在使用 对表进行批量更新时JdbcBatchItemWriter,我们没有找到不更新属性的方法null。我们不想有太多的查询,ItemPreparedStatementSetter所以我们有一个查询来更新表中的所有字段。不同的批处理作业集更新表的不同属性

List<Report> summaryList = getSummaryList()    
JdbcBatchItemWriter<ItemMktDcGpReport> writer1 = new JdbcBatchItemWriter<>();
String sql_update = GenericConstants.UPDATE_QUERY;
writer1.setDataSource(dataSource);
ItemPreparedStatementSetter<Report> updatePreparedStatementSetter = new ItemMergeUpdatePreparedItemSetter();
writer1.setItemPreparedStatementSetter(updatePreparedStatementSetter);
writer1.setSql(sql_update);
writer1.afterPropertiesSet();
writer1.write(summaryList);

尝试以下查看查询中条件更新的几个示例,但它还没有帮助。下面是查询。对此的任何帮助将不胜感激。

UPDATE_QUERY = "update  [dbo].[test_tbl]  
SET test_col1 = CASE When ?!=0  then ?
else test_col1 end ,
test_col2 =  CASE When ?!=0  then ? 
else test_col2 WHERE  market=? and country = ?"

我不想基于参数构造 SQL 查询,因为我会失去JdbcBatchItemWriter. 有人可以建议解决这个问题的正确方法并可能更正我正在编写的 SQL 查询吗?

标签: spring-bootspring-batchspring-jdbc

解决方案


推荐阅读