Spring Batch (2)
来源:互联网 发布:mysql怎么快速替换东西 编辑:程序博客网 时间:2024/06/05 14:16
使用spring batch 批处理csv文件的数据再把处理的数据放到mysql
POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.springbatch.hello</groupId> <artifactId>SpringBatch2Demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>SpringBatch2Demo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-core</artifactId> <version>3.0.6.RELEASE</version> </dependency> <!-- quartz Dependency --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version></dependency> <!-- Apache DBCP--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- Mysql Dependency --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.4.RELEASE</version> </dependency> </dependencies></project>
实体类user
package com.springbatch.hello.SpringBatch2Demo;public class User { private String name; private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }
实体类Message
package com.springbatch.hello.SpringBatch2Demo;public class Message { private String content;public String getContent() {return content;}public void setContent(String content) {this.content = content;} }
实现的ItemProccess接口
package com.springbatch.hello.SpringBatch2Demo;import org.springframework.batch.item.ItemProcessor;public class MessageProcessor implements ItemProcessor<User, Message> { public Message process(User item) throws Exception { Message message = null; if (item.getAge() > 16) { message = new Message(); message.setContent(item.getName()); } return message; } }
实现ItemWriter接口
package com.springbatch.hello.SpringBatch2Demo;import java.util.List;import org.springframework.batch.item.ItemWriter;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;public class MessageWriter2 implements ItemWriter<Message> { private static final String INSERT_MESSAGE = " insert into message values (?) ";private JdbcTemplate jdbcTemplate;@Autowired public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public void write(List<? extends Message> items) throws Exception { for(Message item : items ) { int count=jdbcTemplate.update(INSERT_MESSAGE,new Object[] {item.getContent()} ); System.out.println("影响了:"+count+" 行"); } } }
message_job.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"><context:annotation-config /> <!-- Component scan to find all Spring components --> <context:component-scan base-package="com.springbatch.hello.SpringBatch2Demo" /><!-- http://www.cnblogs.com/gulvzhe/archive/2011/11/06/2238125.html 配置文件解析 --><batch:job id="messageJob"> <batch:step id="messageStep"> <batch:tasklet> <batch:chunk reader="messageReader" processor="messageProcessor" writer="messageWriter" commit-interval="2" chunk-completion-policy=""> </batch:chunk> </batch:tasklet> </batch:step> </batch:job> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/springbatchtest"></property> <property name="username" value="root"></property> <property name="password" value="123456liu"></property> </bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property></bean><bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> <property name="transactionManager" ref="transactionManager"/> </bean> <bean id="messageReader" class="org.springframework.batch.item.file.FlatFileItemReader"> <property name="lineMapper" ref="lineMapper"></property> <property name="resource" value="user.csv"></property></bean><bean id="lineMapper" class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> <property name="lineTokenizer" ref="lineTokenizer"></property> <property name="fieldSetMapper" ref="fieldSetMapper"></property></bean><bean id="fieldSetMapper" class="com.springbatch.hello.SpringBatch2Demo.UserMapper"></bean> <bean id="lineTokenizer" class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"/> <bean id="messageProcessor" class="com.springbatch.hello.SpringBatch2Demo.MessageProcessor"/> <bean id="messageWriter" class="com.springbatch.hello.SpringBatch2Demo.MessageWriter2"/> <!-- <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"> <property name="dataSource" ref="dataSource"/></bean> --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/></bean> </beans>
user.csv文件
TWer1,18TWer2,21TWer3,13TWer4,16TWer5,25TWer6,45TWer7,200TWer121,23
数据库message表只有一个mess的varchar(300)的字段
测试类
package com.springbatch.hello.SpringBatch2Demo;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobParameters;import org.springframework.batch.core.launch.support.SimpleJobLauncher;import org.springframework.batch.core.repository.JobRepository;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.core.task.SimpleAsyncTaskExecutor;public class MainTest { //Reference blog http://ningandjiao.iteye.com/blog/1616584 public static void main(String[] args) { ClassPathXmlApplicationContext c = new ClassPathXmlApplicationContext("message_job.xml"); SimpleJobLauncher launcher = new SimpleJobLauncher(); launcher.setJobRepository((JobRepository) c.getBean("jobRepository")); launcher.setTaskExecutor(new SimpleAsyncTaskExecutor()); Job job=(Job) c.getBean("messageJob"); try { launcher.run(job, new JobParameters()); } catch (Exception e) { e.printStackTrace(); } } }
结果:
Aug 30, 2017 9:17:42 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefreshINFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@41cf53f9: startup date [Wed Aug 30 09:17:42 CST 2017]; root of context hierarchyAug 30, 2017 9:17:42 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: Loading XML bean definitions from class path resource [message_job.xml]Aug 30, 2017 9:17:44 AM com.mchange.v2.log.MLog <clinit>INFO: MLog clients using java 1.4+ standard logging.Aug 30, 2017 9:17:44 AM com.mchange.v2.c3p0.C3P0Registry bannerINFO: Initializing c3p0-0.9.1.1 [built 15-March-2007 01:32:31; debug? true; trace: 10]Aug 30, 2017 9:17:45 AM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManagerINFO: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 2yri2z9qdilt3z1l1ptjh|1ed1993a, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 2yri2z9qdilt3z1l1ptjh|1ed1993a, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://localhost:3306/springbatchtest, lastAcquisitionFailureDefaultUser -> null, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]Aug 30, 2017 9:17:47 AM org.springframework.batch.core.launch.support.SimpleJobLauncher runINFO: Job: [FlowJob: [name=messageJob]] launched with the following parameters: [{}]Aug 30, 2017 9:17:47 AM org.springframework.batch.core.job.SimpleStepHandler handleStepINFO: Executing step: [messageStep]影响了:1 行影响了:1 行影响了:1 行影响了:1 行影响了:1 行影响了:1 行Aug 30, 2017 9:17:47 AM org.springframework.batch.core.launch.support.SimpleJobLauncher runINFO: Job: [FlowJob: [name=messageJob]] completed with the following parameters: [{}] and the following status: [COMPLETED]
参考博客:
http://ningandjiao.iteye.com/blog/1616584
http://blog.csdn.net/renfufei/article/details/45894875
spring 配置数据源的方式(只包含hibernate)
配置文件解析
阅读全文
1 0
- Spring Batch Concepts(2)
- Spring Batch (2)
- Spring Batch(3)(2)
- Spring Batch 核心概念 2
- spring batch
- Spring batch
- Spring Batch
- Spring Batch
- spring-batch
- Spring batch
- Spring Batch
- Spring Batch
- spring batch
- spring batch
- spring batch
- Spring Batch
- Spring batch
- Spring Batch 构建批处理应用2
- 解决Matcaffe的编译问题
- 前端面试准备-2
- SpringBoot实例教程
- Python正则表达式
- 如何调用另一个python文件中的代码
- Spring Batch (2)
- 洛谷p1052过河
- 十大游戏开发引擎优缺点对比
- BZOJ 1070 修车 费用流(拆点)
- C#在一个form中改变另一个form中控件的内容、C#做登录界面并且密码显示为*
- 从HTTP到HTTPS再到HSTS
- 跨服务器数据拉取
- adb基本命令:
- 白化处理总结及python实现