在ItemReader Spring Batch中将时间戳添加到JobParameter

时间:2018-02-05 13:16:13

标签: parameters spring-batch sql-timestamp

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

1 个答案:

答案 0 :(得分:0)

您可以使用addDate方法

parameters = new JobParametersBuilder()
                           .addDate("key", new Date())
                           .toJobParameters();