如何从PreparedStatementSetter的setValues()方法获取String

时间:2013-03-19 06:46:16

标签: spring-batch

我想从setValues() ItemPreparedStatementSetter方法中获取字符串,这是SQL字符串。我想将此String用于setSql()的{​​{1}}方法。有人可以帮助我实现这一目标。 以下是我的ItemWriter课程:

PreparedStatementSetter

1 个答案:

答案 0 :(得分:0)

好的,你没有以正确的方式实现PreparedStatementSetter。

您所要做的就是在ItemWriter配置或itemWriter实现中声明您的SQL。

我假设您正在使用JdbcBatchItemWriter:

public class MyItemWrtier extends  JdbcBatchItemWriter<MyDomainObj> implements InitializingBean{



@Override
public void afterPropertiesSet() throws Exception {
        // set the SQL

    String SQL= "UPDATE MYTABLE WHERE FIELD1 = ? AND FIELD2 = ?"

    super.setSql(SQL);

}
}

现在,您的批处理配置应该像这样声明这个作者。

    <bean id="myItemWriter" class="xxx.yyy.MyItemWriter">
    <property name="dataSource" ref="dataSourceIemt" />
    <property name="itemPreparedStatementSetter" ref="myPreparedStatementSetter" />
</bean>

最后,

@Component("myPreparedStatementSetter")
public class MyPreparedStatementSetter implements ItemPreparedStatementSetter<MyDomainObj> {



public void setValues(MyDomainObj obj, PreparedStatement ps) throws SQLException {
    ps.setString(1, obj.getsometing());
    ps.setString(2, obj.getsometingElse());

}
}

希望很清楚。

此致