jdk8,maven,oracle,
代码
Job-Repository.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:batch="http://www.springframework.org/schema/batch" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd" > <batch:job-repository id="jobRepository" data-source="dataSource" isolation-level-for-create="READ_COMMITTED" transaction-manager="transactionManager" /> <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository" /> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@url:port:dbname"/> <property name="username" value="user" /> <property name="password" value="pwd" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
batch.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:batch-int="http://www.springframework.org/schema/batch-integration" xsi:schemaLocation=" http://www.springframework.org/schema/batch-integration http://www.springframework.org/schema/batch-integration/spring-batch-integration.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd"> <import resource="classpath:Job-Repository.xml"/> <batch:job id="helloWorldJob"> <batch:step id="step_hello" next="step_world"> <batch:tasklet ref="hello" transaction-manager="transactionManager"></batch:tasklet> </batch:step> <batch:step id="step_world"> <batch:tasklet ref="world" transaction-manager="transactionManager"></batch:tasklet> </batch:step> </batch:job> <bean id="hello" class="hello.HelloWorldTasklet"> <property name="message" value="Hello "></property> </bean> <bean id="world" class="hello.HelloWorldTasklet"> <property name="message" value=" World!"></property> </bean> </beans>
JobLaunch.java
package hello; import org.springframework.batch.core.Job; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class JobLaunch { /** * @param args */ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "batch.xml"); JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher"); Job job = (Job) context.getBean("helloWorldJob"); try { /* 运行Job */ JobExecution result = launcher.run(job, new JobParameters()); /* 处理结束,控制台打印处理结果 */ System.out.println(result.toString()); } catch (Exception e) { e.printStackTrace(); } } }
HelloWorldTasklet.java
package hello; import org.springframework.batch.core.Job; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class JobLaunch { /** * @param args */ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "batch.xml"); JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher"); Job job = (Job) context.getBean("helloWorldJob"); try { /* 运行Job */ JobExecution result = launcher.run(job, new JobParameters()); /* 处理结束,控制台打印处理结果 */ System.out.println(result.toString()); } catch (Exception e) { e.printStackTrace(); } } }
建表脚本
CREATE SEQUENCE BATCH_STEP_EXECUTION_SEQ; CREATE SEQUENCE BATCH_JOB_EXECUTION_SEQ; CREATE SEQUENCE BATCH_JOB_SEQ; select * from BATCH_JOB_INSTANCE; select * from BATCH_JOB_EXECUTION_PARAMS; select * from BATCH_JOB_EXECUTION; select * from BATCH_STEP_EXECUTION; select * from BATCH_JOB_EXECUTION_CONTEXT; select * from BATCH_STEP_EXECUTION_CONTEXT; drop table BATCH_JOB_EXECUTION_CONTEXT; drop table BATCH_STEP_EXECUTION_CONTEXT; drop table BATCH_STEP_EXECUTION; drop table BATCH_JOB_EXECUTION_PARAMS; drop table BATCH_JOB_EXECUTION; drop table BATCH_JOB_INSTANCE; CREATE TABLE BATCH_JOB_INSTANCE ( JOB_INSTANCE_ID number PRIMARY KEY , VERSION number, JOB_NAME VARCHAR(100) NOT NULL , JOB_KEY VARCHAR(2500) ); cREATE TABLE BATCH_JOB_EXECUTION_PARAMS ( JOB_EXECUTION_ID number NOT NULL , TYPE_CD VARCHAR(6) NOT NULL , KEY_NAME VARCHAR(100) NOT NULL , STRING_VAL VARCHAR(250) , DATE_VAL date DEFAULT NULL , LONG_VAL number , DOUBLE_VAL DOUBLE PRECISION , IDENTIFYING CHAR(1) NOT NULL ); CREATE TABLE BATCH_JOB_EXECUTION ( JOB_EXECUTION_ID number PRIMARY KEY , VERSION number, JOB_INSTANCE_ID number NOT NULL, CREATE_TIME TIMESTAMP NOT NULL, START_TIME TIMESTAMP DEFAULT NULL, END_TIME TIMESTAMP DEFAULT NULL, STATUS VARCHAR(10), EXIT_CODE VARCHAR(20), EXIT_MESSAGE VARCHAR(2500), LAST_UPDATED TIMESTAMP, JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL, constraint JOB_INSTANCE_EXECUTION_FK foreign key (JOB_INSTANCE_ID) references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID) ) ; CREATE TABLE BATCH_STEP_EXECUTION ( STEP_EXECUTION_ID number PRIMARY KEY , VERSION number NOT NULL, STEP_NAME VARCHAR(100) NOT NULL, JOB_EXECUTION_ID number NOT NULL, START_TIME TIMESTAMP NOT NULL , END_TIME TIMESTAMP DEFAULT NULL, STATUS VARCHAR(10), COMMIT_COUNT number , READ_COUNT number , FILTER_COUNT number , WRITE_COUNT number , READ_SKIP_COUNT number , WRITE_SKIP_COUNT number , PROCESS_SKIP_COUNT number , ROLLBACK_COUNT number , EXIT_CODE VARCHAR(20) , EXIT_MESSAGE VARCHAR(2500) , LAST_UPDATED TIMESTAMP, constraint JOB_EXECUTION_STEP_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ; CREATE TABLE BATCH_JOB_EXECUTION_CONTEXT ( JOB_EXECUTION_ID number PRIMARY KEY, SHORT_CONTEXT VARCHAR(2500) NOT NULL, SERIALIZED_CONTEXT CLOB, constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ; CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT ( STEP_EXECUTION_ID number PRIMARY KEY, SHORT_CONTEXT VARCHAR(2500) NOT NULL, SERIALIZED_CONTEXT CLOB, constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID) references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID) ) ;