您能否帮我在 Spring Batch 中为 JobParameter 添加一个 TIMESTAMP 值。
我的 JDBCPageItemReader 如下所示:
<bean id="beanSample"
class="org.springframework.batch.item.database.JdbcPagingItemReader"
scope="step">
<property name="dataSource" ref="pgDataSource" />
<property name="queryProvider">
<bean class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
<property name="dataSource" ref="pgDataSource" />
<property name="selectClause" value="SELECT *" />
<property name="fromClause" value="FROM sh.trains" />
<property name="whereClause" value="WHERE train_type = :train_type_inp and destination = :dest_code
and train_time between = :time_a and = :time_b" />
<property name="sortKey" value="train_time" />
</bean>
</property>
<property name="parameterValues">
<map>
<entry key="pymt_type_code" value="#{jobParameters['train_type']}" />
<entry key="mrkt_code" value="#{jobParameters['dest_code']}" />
<entry key="start_time" value="#{jobParameters['time_a']}" />
<entry key="end_time" value="#{jobParameters['time_b']}" />
</map>
</property>
<property name="pageSize" value="5" />
<property name="rowMapper">
<bean class="com.train.timetable.Mapper.SampleMapper" />
</property>
</bean>
在上面的 PostgreS DB 中,train_time 被添加为类型 TIMESTAMP。因此,我需要在运行作业时将参数 time_a 和 time_b 添加为 JobParameter。但我不明白如何在 JobParameter 中添加 TIMESTAMP。我尝试将时间作为字符串传递(如下所示)。但它不起作用。
JobParameters jobParameters = new JobParametersBuilder()
.addString("train_type", "LOCAL")
.addString("dest_code", "CAN")
.addString("time_a", "2018-02-05 18:21:46.24812")
.addString("time_b", "2018-02-05 18:22:07.085596").toJobParameters();
JobExecution result = jobLauncher.run(jobLocator.getJob(jobName), jobParameters);
任何人都可以帮我解决这个问题。提前致谢。我搜索了这个问题,发现了 Spring 中的 DefaultJobParametersConverter 类。但我不确定如何使用它。请帮帮我。我被困在这里。我无法从 TIMESTAMP 更改列类型。