Можно ли написать запрос на обновление внутри метода JdbcBatchItemWriter () в SpringBatch - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть фрагмент кода ItemWriter, как показано ниже

private static final String SYNC_UL_LEADS_UPDATE = "UPDATE SYNC_UL_LEADS  SET SFDC_ID = :SFDC_ID WHERE Email = :Email";

@Bean
public ItemWriter<SyncULLeads> syncUlLeadsUpdateWriter() {

final DataSource datasource = dataSource;

JdbcBatchItemWriter<SyncULLeads> writer = new JdbcBatchItemWriterBuilder<SyncULLeads>().beanMapped()
                .dataSource(datasource).sql(SYNC_UL_LEADS_UPDATE)
                .assertUpdates(true).build();


return writer;
    }

1 Ответ

0 голосов
/ 07 апреля 2020

Можно ли написать запрос на обновление внутри метода JdbcBatchItemWriter () в SpringBatch

Да, это возможно, вы можете найти пример здесь:

https://github.com/spring-projects/spring-batch/blob/8762e3411557aaf887867f8d8594b01127538cb1/spring-batch-samples/src/main/resources/jobs/iosample/jdbcCursor.xml#L21

Редактировать: Объяснить, как поля будут отображаться в переменные в операторе SQL

Поскольку вы используете .beanMapped(), переменные в операторе SQL будет сопоставлен с элементом SyncULLeads с использованием Java Соглашения о бинах (иначе как получатели). Это объясняется в javado c из JdbcBatchItemWriterBuilder # beanMapped и BeanPropertyItemSqlParameterSourceProvider .

...