你能不能帮我在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类型。因此,当我运行Job时,我需要将参数time_a和time_b添加为JobParameter。但我不明白如何在JobParameter中添加TIMESTAMP。我已经尝试将时间作为String传递(如下所示)。但它不起作用。
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更改列类型。
答案 0 :(得分:0)
您可以使用addDate
方法
parameters = new JobParametersBuilder()
.addDate("key", new Date())
.toJobParameters();