我想从setValues()
ItemPreparedStatementSetter
方法中获取字符串,这是SQL
字符串。我想将此String
用于setSql()
的{{1}}方法。有人可以帮助我实现这一目标。
以下是我的ItemWriter
课程:
PreparedStatementSetter
答案 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());
}
}
希望很清楚。
此致