有没有更好的方法从文件系统加载sql以注入JDBCCursorItemReader。 我想从文件中加载sql查询,而不是在配置文件中加载硬编码。
//spring bean
<bean id="jdbcReader" class="com.sample.DatabaseReader">
<property name="sql" value="query.sql"/>
</bean>
然后我扩展了JDBCCursorItemReader
//extended cursoritemreader
class DatabaseReader extends JDBCCursorItemReader {
//Overriden method
@Override
public void setSql(String fileName) {
//file
File f = new File(fileName);
//read file from given path
String query = FileCopyUtils.copyToString(f);
//pass the query
super.setSQL(query);
}
}
答案 0 :(得分:2)
使用Spring的PropertyPlaceHolder
将SQL直接注入到阅读器中(无需为此扩展我们的阅读器)。一个例子如下:
<bean id="jdbcItemReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="dataSource" />
<property name="rowMapper" ref="myRowMapper>
<property name="sql" value="${batch.sql}"/>
</bean>
只要您配置了PropertiesPlaceholderConfigurer
指向包含batch.sql
属性的属性文件,您就应该好了。