0

您能否帮我在 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 更改列类型。

4

1 回答 1

0

你可以使用addDate方法

parameters = new JobParametersBuilder()
                           .addDate("key", new Date())
                           .toJobParameters();
于 2018-02-09T06:52:08.727 回答