再会,
我有一个 Spring 批处理,org.springframework.batch.item.support.CompositeItemWriter
用于将数据写入数据库。
以下是我的 xml 中的编写器代码:
<bean id="iReturnCompositeTableWriter" class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<ref bean="iReturnTableWriter5" />
</list>
</property>
</bean>
<bean id="iReturnTableWriter5" class="com.batch.job.writer.IReturnTableWriter">
<property name="assertUpdates" value="false" />
<property name="itemSqlParameterSourceProvider">
<!-- Our Mapper for table writer -->
<bean class="com.batch.job.writer.mapper.IReturnWriterTableMapper" />
</property>
<!-- Put in your INSERT, UPDATE, DELETE SQL here -->
<property name="sql"
value="UPDATE ADM.TRX
SET STATUS = 'FAIL'
WHERE INTERNALREFERENCENO = :theirTraceNum" />
<property name="dataSource" ref="dataSource" />
</bean>
以下是IReturnTableWriter
类的代码:
public class IReturnTableWriter extends JdbcBatchItemWriter< TrxVO >
implements StepExecutionListener, ItemWriteListener< TrxVO > {
public void afterWrite(List<? extends BulkPaymentVO> arg0) {
}
public void beforeWrite(List<? extends BulkPaymentVO> arg0) {
}
public void onWriteError(Exception arg0, List<? extends BulkPaymentVO> arg1) {
}
public ExitStatus afterStep(StepExecution arg0) {
return null;
}
public void beforeStep(StepExecution arg0) {
}
}
以下是IReturnWriterTableMapper
类的代码:
public class IReturnWriterTableMapper implements
ItemSqlParameterSourceProvider< IbgReturnVO > {
public SqlParameterSource createSqlParameterSource(TrxVO trxVO) {
return new BeanPropertySqlParameterSource(trxVO);
}
}
批处理日志显示此批处理运行成功,没有任何错误。成功计数与我的输入文件行计数匹配。在日志中,我还看到它被阅读器读取并存储到trxVO
对象中。
但是,有 1 条记录没有更新到生产中的数据库,即使成功计数是正确的。我抓取输入文件并在 SIT、UAT 中运行,并且工作正常。从日志中,我看不到有关更新查询的日志。
我实际上已经启用了日志级别来跟踪org.springframework.batch
logback.xml org.springframework.jdbc
:
<logger name="org.springframework.batch">
<level value="TRACE" />
</logger>
<logger name="org.springframework.jdbc">
<level value="TRACE" />
</logger>
在日志中,我可以看到它已经生效:
15:44:19,173 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.springframework.batch level set to TRACE
15:44:19,173 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.springframework.jdbc level set to TRACE
我想问一下如何为作者启用更多日志,以便我可以解决正在发生的事情。
或者,如果您有更有用的想法或建议,请指教。