这里我们介绍一个从数据库读取数据并写入到文件中的案例。如果能真心爱上一个人,那么不管对方是何等恶劣,哪怕对方并不爱自己,人生也至少不会是地狱,就算多少有点黯淡。

读取数据库数据

一、定义一个读写的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的使用(五)的更多相关文章

  1. SpringBatch Sample (五)(复合格式文件的读、多文件的写)

    前面关于Spring Batch的文章,讲述了SpringBatch对CSV文件的读写操作.对XML文件的操作,以及对固定长格式文件的操作.这些事例,同一个Reader读取的都是相同格式的数据,最终写 ...

  2. YII内置验证规则

    required: 必填字段验证, 来自 CRequiredValidator类的别名 array(‘字段名列表用逗号隔开’, ‘required’),    就这样的一个小小的写法,可以让字段前面加 ...

  3. Spring Batch介绍

    简介 SpringBatch 是一个大数据量的并行处理框架.通常用于数据的离线迁移,和数据处理,⽀持事务.并发.流程.监控.纵向和横向扩展,提供统⼀的接⼝管理和任务管理;SpringBatch是Spr ...

  4. SpringBoot整合SpringBatch

    一.引入依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...

  5. springbatch操作CSV文件

    一.需求分析 使用Spring Batch对CSV文件进行读写操作: 读取一个含有四个字段的CSV文件(id, name, age, score), 对文件做简单的处理, 然后输出到还有一个csv文件 ...

  6. SpringBatch的核心组件JobLauncher和JobRepository

    Spring Batch的框架包括启动批处理作业的组件和存储Job执行产生的元数据.因此只需掌握配置这个基础框架在批处理应用程序中即启动Jobs并存储Job元数据. 组件:Job Launcher和J ...

  7. SpringBatch简介

    spring Batch是一个轻量级的.完善的批处理框架,旨在帮助企业建立健壮.高效的批处理应用.SpringBatch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使 ...

  8. spring-boot-oracle spring-batch

    Install/Configure Oracle express Oracle xe installer for linux (I don't care if you're running linux ...

  9. springbatch的封装与使用

    springbatch 主要实现批量数据的处理,我对batch进行的封装,提出了jobBase类型,具体job需要实现它即可.Spring Batch 不仅提供了统一的读写接口.丰富的任务处理方式.灵 ...

  10. SpringBatch的流程简介

    SpringBatch的流程图如下: 每个Batch都会包含一个Job.Job就像一个容器,这个容器装了若干Step,Batch中实际干活的也就是这些Step,至于Step干什么活,无外乎读取数据,处 ...

随机推荐

  1. C# 中委托和代理是一个概念吗??

    刚刚看了一下资料,发现有些资料说的是代理,有的说是委托,但都是指同一样东西delegate,委托和事件是有关的,因为事件的本质就是多播委托,关于多播委托楼主可以找找资料就知道了. 不过个人觉得这两个概 ...

  2. MyMathLib系列(行列式计算)

    靠人不如靠己,准备做自己得MathLib,在学校的时候,就想过把数学数理的东西都计算机化.但一直没有时间去做这件事情,如今认为空余 时间比較闲,就做做这件事情,先从线性代数開始,毕竟这里面的非常多算法 ...

  3. Couchbase 集群小实践

    局域网 两台机  192.168.1.2  我们称为A机器   192.168.1.3   我们称为B机器   配置集群的时候,从A或者是B的web后台都可以添加, 在这里 我们以 A机器为主   目 ...

  4. 使用FileZilla解决从Windows上传文件到Linux vsftpd的乱码问题!

    日前将golang的开发环境从windows转移到了CentOS6上,为了把以前写得项目代码上传到centos,架设了vsftpd服务,设置为本地用户登录,然后用惯用的ftp软件flashfxp上传了 ...

  5. MySQL死锁分析

    死锁问题背景 做MySQL代码的深入分析也有些年头了,再加上自己10年左右的数据库内核研发经验,自认为对于MySQL/InnoDB的加锁实现了如指掌,正因如此,前段时间,还专门写了一篇洋洋洒洒的文章, ...

  6. ZooKeeper学习之-Zookeeper简单介绍(一)

    一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同 ...

  7. BareTail大文件日志实时查看工具

    BareTail 动态的查看日志文件,就像Linux上的tail tail -f nohup.out 功能: 实时文件查看 tail命令模式,自动滚动 支持2g以上大文件 自动滚动 彩色监控 多文件监 ...

  8. 详解CorelDRAW中关于群组的操作

    CorelDRAW软件中的“群组”功能键主要用于整合多个对象.在进行比较复杂的绘图编辑时,通常会有很多的图形对象,为了方便操作,可以对一些对象设定群组.设定群组以后的多个对象,将被看作一个单独的对象. ...

  9. 关于HTML标签嵌套的问题详解

    先说基础,HTML标签有两类: 1.块级元素 div.h1~h6.address.blockquote.center.dir.dl.dt.dd.fieldset.form.hr.isindex.men ...

  10. linux中sudo如何读取标准输入作为密码,避免每次都输入密码?

    需求描述: 今天想要在生产环境中,弄自动部署的脚本,但是现在呢,需要sudo权限,每次都要输入.就想看sudo如何能从标准输入读取密码. 操作过程: 1.原来的方法 [deployer@testvm ...