在写入DB之前使用spring批处理批处理记录

时间:2015-10-27 13:43:36

标签: spring-batch

在春季批量代码中,我正在阅读100条记录。对于块中的每个记录,我正在检查记录是否存在于DB中。如果记录存在于DB中,我没有插入它 第一次,如果我在100块中有重复记录,则弹簧批处理器无法识别该记录是否重复,因为DB中没有数据,处理器将首先选择全部100,然后执行插入

有没有办法可以先在100块内检查,然后检查数据库,然后将这两个插入数据库?

1 个答案:

答案 0 :(得分:4)

您可以实现自己的自定义ItemProcessor来检查重复项并删除它们。

以下是一个例子:

public class DropDuplicateItemProcessor<T> implements ItemProcessor<T, T> {

    // Will be used to save previous items;
    private List<T> previousItems = new ArrayList<T>();

    @Override
    public T process(T item) throws Exception {

         // Check for duplicates with your own logic (method equals)
         if (previousItems.contains(item))
             return null; // Drop duplicate

         // Save item to check for duplicates later
         previousItems.add(item);

         // Continue with non-duplicate item
         return item;
    }

}