springbatch---->springbatch的使用(五)
这里我们介绍一个从数据库读取数据并写入到文件中的案例。如果能真心爱上一个人,那么不管对方是何等恶劣,哪怕对方并不爱自己,人生也至少不会是地狱,就算多少有点黯淡。
读取数据库数据
一、定义一个读写的job
<!--读取数据库数据到文件-->
<job id="readDatabaseJob">
<step id="readDatabaseStep">
<tasklet transaction-manager="transactionManager">
<chunk reader="userReader" commit-interval="100" writer="userWriter"/>
</tasklet>
</step>
</job>
二、定义并实现读取数据库的reader
<!--读取数据库到文件中-->
<bean id="userReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="sql" value="select user_name, age, address, birthday from batch_user where age > ?;"/>
<property name="rowMapper" ref="userRowMapper"/>
<property name="dataSource" ref="dataSource"/>
<property name="preparedStatementSetter" ref="paramStatementSetterUser"/>
</bean>
<bean id="userRowMapper" class="spring.batch.readDatabase.UserRowMapper"/>
<bean id="paramStatementSetterUser" class="org.springframework.batch.core.resource.ListPreparedStatementSetter" scope="step">
<property name="parameters">
<list>
<value>#{jobParameters['age']}</value>
</list>
</property>
</bean>
上述的UserRowMapper类代码如下
package spring.batch.readDatabase; import org.springframework.jdbc.core.RowMapper;
import spring.batch.readFile.People; import java.sql.ResultSet;
import java.sql.SQLException; /**
* @Author: huhx
* @Date: 2017-11-02 上午 10:16
*/
public class UserRowMapper implements RowMapper<People> { @Override
public People mapRow(ResultSet rs, int rowNum) throws SQLException {
People people = new People();
people.setUsername(rs.getString("user_name"));
people.setAge(rs.getInt("age"));
people.setAddress(rs.getString("address"));
people.setBirthday(rs.getDate("birthday"));
return people;
}
}
三、定义并实现写入文件的writer
<bean id="userWriter" class="spring.batch.readDatabase.UserFileWriter">
<property name="targetDirectory" value="file"/>
<property name="targetFile" value="user.txt"/>
</bean>
UserFileWriter的实现代码
package spring.batch.readDatabase; import org.apache.commons.io.FileUtils;
import org.springframework.batch.item.ItemWriter;
import spring.batch.readFile.People; import java.io.File;
import java.util.List; /**
* @Author: huhx
* @Date: 2017-11-02 上午 10:19
*/
public class UserFileWriter implements ItemWriter<People> { private String targetDirectory;
private String targetFile; public void setTargetDirectory(String targetDirectory) {
this.targetDirectory = targetDirectory;
} public void setTargetFile(String targetFile) {
this.targetFile = targetFile;
} @Override
public void write(List<? extends People> items) throws Exception {
File targetDirectoryAsFile = new File(targetDirectory);
if (!targetDirectoryAsFile.exists()) {
FileUtils.forceMkdir(targetDirectoryAsFile);
}
File target = new File(targetDirectory, targetFile);
FileUtils.writeLines(target, items, true);
}
}
四、其它的一些信息及注意的地方
- 这里我们复写了People类的toString方法
@Override
public String toString() {
return "username=" + username + "|age=" + age + "|address=" + address + "|birthday=" + birthday;
}
- JobLaunch.java类里面,我们增加参数
JobParameters jobParameters = parametersBuilder.addString("age", "25").toJobParameters();
- 数据库表user_batch的所有数据

- 最终生成的user.txt的文件内容如下
username=孙尚香|age=|address=天津|birthday=--
username=牛魔王|age=|address=武汉|birthday=--
友情链接
springbatch---->springbatch的使用(五)的更多相关文章
- SpringBatch Sample (五)(复合格式文件的读、多文件的写)
前面关于Spring Batch的文章,讲述了SpringBatch对CSV文件的读写操作.对XML文件的操作,以及对固定长格式文件的操作.这些事例,同一个Reader读取的都是相同格式的数据,最终写 ...
- YII内置验证规则
required: 必填字段验证, 来自 CRequiredValidator类的别名 array(‘字段名列表用逗号隔开’, ‘required’), 就这样的一个小小的写法,可以让字段前面加 ...
- Spring Batch介绍
简介 SpringBatch 是一个大数据量的并行处理框架.通常用于数据的离线迁移,和数据处理,⽀持事务.并发.流程.监控.纵向和横向扩展,提供统⼀的接⼝管理和任务管理;SpringBatch是Spr ...
- SpringBoot整合SpringBatch
一.引入依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- springbatch操作CSV文件
一.需求分析 使用Spring Batch对CSV文件进行读写操作: 读取一个含有四个字段的CSV文件(id, name, age, score), 对文件做简单的处理, 然后输出到还有一个csv文件 ...
- SpringBatch的核心组件JobLauncher和JobRepository
Spring Batch的框架包括启动批处理作业的组件和存储Job执行产生的元数据.因此只需掌握配置这个基础框架在批处理应用程序中即启动Jobs并存储Job元数据. 组件:Job Launcher和J ...
- SpringBatch简介
spring Batch是一个轻量级的.完善的批处理框架,旨在帮助企业建立健壮.高效的批处理应用.SpringBatch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使 ...
- spring-boot-oracle spring-batch
Install/Configure Oracle express Oracle xe installer for linux (I don't care if you're running linux ...
- springbatch的封装与使用
springbatch 主要实现批量数据的处理,我对batch进行的封装,提出了jobBase类型,具体job需要实现它即可.Spring Batch 不仅提供了统一的读写接口.丰富的任务处理方式.灵 ...
- SpringBatch的流程简介
SpringBatch的流程图如下: 每个Batch都会包含一个Job.Job就像一个容器,这个容器装了若干Step,Batch中实际干活的也就是这些Step,至于Step干什么活,无外乎读取数据,处 ...
随机推荐
- 启动其他APK的Activity方法 (转至http://www.cnblogs.com/lijunamneg/archive/2013/02/26/2934060.html)
有两个app,分别叫做App1和App2.App1包含两个Activity,分别叫做App1_A和App1_B.其中App1_A是入口Activity.也就是App1_A设置intent-filter ...
- Python——hmac
该模块在Python中实现 RFC 2104 中规范的 HMAC 算法. 目录 一.HMAC 对象 1. HMAC.update() 2. HMAC.digest() 3. HMAC.hexdiges ...
- Volley的Get、Post方式(JsonObjectRequest、StringRequest)以及Volley获取图片的3种方式
activity_main.xml 里面什么也没有 AndroidManifest.xml(重点是android:name="com.example.volley.MyApplication ...
- u3d一个GameObject绑定两个AudioSource
u3d 一个GameObject绑定两个AudioSource ,使他们分别播放,并控制 using UnityEngine; using System.Collections; public cl ...
- 新建maven指定jdk版本-eclipse新建maven项目报错The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path的解决方案
具体表现为: 使用Eclipse+Maven建立了一个Javaweb工程,JSP页面顶端出现“红色”的报错信息:The superclass "javax.servlet.http.Http ...
- java多线程入门学习(一)
java多线程入门学习(一) 一.java多线程之前 进程:每一个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销.一个进程包括1--n个线程. 线程:同一类线程共享代码 ...
- WebJars are client-side web libraries (e.g. jQuery & Bootstrap) packaged into JAR (Java Archive) files
webjars网站https://www.webjars.org/,这里将很多的东西都打包成了jar包,想要用什么只需要导入相关的依赖就可以了. 比如springboot会用到jquery,webja ...
- Eclipse中项目全部报错----项目全部打红叉的解决办法
今天遇到一个超级郁闷的事情,Eclipse新建的项目全部都打有红叉,我起初以为自 己可能是因为这两天一直在配置NDK开发环境方面的东西,是不是一不小心把那个地方给配置了,然后新建项目时项目都会出现红叉 ...
- Webkit内核探究【1】——Webkit简介
出处:http://www.cnblogs.com/jyli/archive/2010/01/31/1660355.html作者:李嘉昱 研究Webkit内核已经有一段时间了,在这期间我花了很多时间去 ...
- VC++关于UNICODE版本的开发
关于UNICODE版本的开发 代码转换方案 概述 在VC6.0中,相应的有一些宏来代替ANSI的函数.宏或数据类型,这些宏在ANSI编译条件中处理字符串为单字节,而在UNICODE中处理字符串为双字节 ...