Jdbc 提交间隔为2的Spring批处理将同一对象写入两次,并跳过另一个对象
我使用Spring框架中的Jdbc 提交间隔为2的Spring批处理将同一对象写入两次,并跳过另一个对象,jdbc,spring-batch,spring-jdbc,Jdbc,Spring Batch,Spring Jdbc,我使用Spring框架中的FlatFileItemReader和JdbcItemWriter将数据从文件批量写入Oracle数据库。 当我配置一个commit interval>1,比方说2时,读卡器从文件中读取两行,然后写卡器将第二行的数据写入数据库两次 我的配置如下: <batch:job id="Job"> <batch:step id="step"> <batch:tasklet> <batch:c
FlatFileItemReader
和JdbcItemWriter
将数据从文件批量写入Oracle数据库。
当我配置一个commit interval
>1,比方说2时,读卡器从文件中读取两行,然后写卡器将第二行的数据写入数据库两次
我的配置如下:
<batch:job id="Job">
<batch:step id="step">
<batch:tasklet>
<batch:chunk reader="Reader" writer="Writer"
commit-interval="2" processor-transactional="false" />
</batch:tasklet>
<batch:fail on="FAILED" />
</batch:step>
</batch:job>
<bean id="Reader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="linesToSkip" value="1" />
<!-- TODO: FilePath definieren (Umgebungsabhängig) -->
<property name="resource" value="file:in/Users_kurz.csv" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names" value="name1, name2, name3, name4" />
<property name="delimiter" value=";" />
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="prototypeBeanName" value="lineObject" />
</bean>
</property>
</bean>
</property>
</bean>
<bean id="LineObject" class="this.is.my.LineObject" />
<bean id="dcIdentityWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="INSERT INTO table(col1, col2, col3, col4)
VALUES (:name1, name2, name3, name4)" />
<property name="itemSqlParameterSourceProvider">
<bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
</bean>
您是否可以发布一些java代码,例如读取文件数据的代码和将其写入数据库的代码?您需要显示
this.is.my.LineObject
code.this.is.my.LineObject类似于:公共类LineObject{private String name1;private String name2;+getter+setter}读取文件并写入数据库的代码是spring类FlatFileItemReader和JdbcBatchItemWriter