概述
在spring batch框架中提供了三个核心的概念,分别是reader和processor和writer,分别用于读取,处理和写数据。关于这部分更详细的内容可以参考博客:批处理框架spring batch介绍及使用。这里不再展开。本篇文章主要想记录的问题是使用spring batch时,对于读取到的数据我们应该怎样去处理的问题。
怎样去处理读取到的数据,这个问题本质上是由需求决定的。如果读取到的数据不需要做任何处理,只需要插入到目标数据库即可的话,这意味着procesor这个模块不需要任何逻辑。而如果我们读取到的数据是需要经过处理才能写入的,那这必然导致procesor需要写逻辑代码,且我们必须将读到的数据序列化成一个能操作的对象,当然这也是根据需求决定的。
什么是rowmapper
在spring batch的reader读取到数据之后,也都是将数据放到ResultSet对象里面的,这与直接使用JdbcTemplate无异。rowmapper是spring jdbc里面定义的接口,其左右就是用于将从数据库读到的一行记录,映射到另一个对象里面去。该接口定义如下:
@FunctionalInterface
public interface RowMapper<T> {
/**
* Implementations must implement this method to map each row of data
* in the ResultSet. This method should not call {@code next()} on
* the ResultSet;