Создать класс POJO для представления записи, например Foo
:
public class Foo {
private final long id;
// more properties
public Foo(long id // ,...) {
this.id = id;
// set other properties
}
public long getId() {
return id;
}
}
так читатель будет JdbcCursorItemReader<Foo>
.
И создайте RowMapper<Foo>
, например:
public FooRowMapper implements implements RowMapper<Foo> {
@Override
public Foo mapRow(ResultSet rs, int rowNum) throws SQLException {
long id = rs.getLong("id");
// more properties
return new Foo(id // more properties);
}
}
и установите его на считывателе: itemReader.setRowMapper(new FooRowMapper())
.
ExtractionItemProcessor
получит Foo
и будет выглядеть примерно так:
public class ExtractionItemProcessor implements ItemProcessor<Foo, String>{
@Override
public String process(Foo item) throws Exception {
int someValue = transform(foo);
return "INSERT INTO blah blah blah..." + someValue + "..."; // potentially dangerous - see SQL injection attack
}
}
Чтобы продолжить, возможно, ExtractionItemProcessor
преобразование Foo
должно создать Bar
. Тогда это будет выглядеть так:
public class ExtractionItemProcessor implements ItemProcessor<Foo, Bar>{
@Override
public Bar process(Foo item) throws Exception {
int someValue = transform(foo);
// more values....
return new Bar(someValue // more values);
}
}
Итак, импелентация ItemWriter
займет List<Bar>
, который знает, как безопасно вставить Bar
s в другой стол.