У меня есть шаги в пакетном задании, которое делает разные вещи.
Но прежде чем я начну все эти шаги, мне нужно очистить таблицу. Есть ли простой способ написать тасклет, который удалит таблицу непосредственно из файла задания xml?
Я использую ibatis как ORM
вы имеете в виду еще более простой, чем тасклет, т.е. как этот псевдокод?
<!-- xml bean config -->
<bean id="deleteTableTaskletStep" class="...">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="delete from ..." />
</bean>
// java code
public class DeleteTableTasklet implements Tasklet {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
new JdbcTemplate(this.dataSource).executeQuery(this.sql)
return RepeatStatus.FINISHED;
}
}
FYI. Вместо трюка вы можете использовать <jdbc:initialize-database>
для указания на инициализацию script со всеми вашими SQL-запросами, используемыми для инициализации db. Таким образом, запросы будут легче поддерживать.
<!-- xml bean config -->
<jdbc:initialize-database data-source="dataSource">
<jdbc:script location="file:C:/db/initial-query.sql" />
</jdbc:initialize-database>
Не забудьте включить это вверху
<beans xmlns="http://www.springframework.org/schema/beans"
...
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="...
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd">