文章目录

  • 一、抽取顺序读取数据库公共Writer
  • 二、mapper配置文件
  • 三、写数据库的job
  • 四、继承公共CommonProcesor
  • 五、执行job

前言:我们在日常开发中可能会遇到写数据库,SpringBatch封装的也有写数据库的Writer,但是我们这次做实验用的是Mybatis封装的MyBatisBatchItemWriter

代码已上传GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch

注意:本章job使用的所有实体类均是上一章SpringBatch读数据库(MyBatisPagingItemReader)(三)的实体,所以这一章
就不在一一列举了。

SpringBatch其它文章直通车:

SpringBatch读单个文件(FlatFileItemReader)和写单个文件(FlatFileItemWriter)(一)
SpringBatch顺序读取多文件(MultiResourceItemReader)和顺序写文件(MultiResourceItemWriter)(二)
SpringBatch读数据库(MyBatisPagingItemReader)(三)
SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)
SpringBatch 监听器之Job监听器(JobExecutionListener)和Step监听器(StepExecutionListener)(五)
SpringBatch 监听器之Chunk监听器(ChunkListener)和Skip监听器(SkipListener)(六)

一、抽取顺序读取数据库公共Writer

CommonMybatisItemWriter继承MyBatisBatchItemWriter

package com.sl.common;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.batch.MyBatisBatchItemWriter;/*** 写数据库* @author shuliangzhao* @Title: CommonMybatisItemWriter* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/10 19:18*/
public class CommonMybatisItemWriter<T> extends MyBatisBatchItemWriter<T> {public  CommonMybatisItemWriter(SqlSessionFactory sqlSessionFactory,String name) {setSqlSessionFactory(sqlSessionFactory);setStatementId("com.sl.entity." + name + ".insertCat");setAssertUpdates(false);}}

二、mapper配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sl.entity.Cat"><!-- 可根据自己的需求,是否要使用 --><resultMap type="cat" id="catMap"><id column="id" property="id" jdbcType="INTEGER" /><result column="catname" property="catname" jdbcType="VARCHAR" /><result column="catage" property="catage" jdbcType="VARCHAR" /><result column="cataddress" property="cataddress" jdbcType="VARCHAR" /></resultMap><insert id="insertCat" parameterType="com.sl.entity.Cat">insert into cat(id, catname, catage, cataddress)values(#{id},#{catname}, #{catage}, #{cataddress})</insert><select id="selectList"  resultMap="catMap">select id,catname,catage,cataddress from cat</select></mapper>

三、写数据库的job

package com.sl.config;import com.sl.common.CommonFileItemReader;
import com.sl.common.CommonMybatisItemWriter;
import com.sl.entity.CafeCat;
import com.sl.entity.Cat;
import com.sl.processor.CatProcessor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author shuliangzhao* @Title: CafeCatConfiguration* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/10 19:31*/
@Configuration
@EnableBatchProcessing
public class CafeCatConfiguration {@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Autowiredprivate CatProcessor catProcessor;@Autowiredprivate SqlSessionFactory sqlSessionFactory;@Beanpublic Job cafeCatJob() {return jobBuilderFactory.get("cafeCatJob").start(cafeCatStep()).build();}@Beanpublic Step cafeCatStep() {return stepBuilderFactory.get("cafeCatStep").<CafeCat, Cat>chunk(10).reader(cafeCatCommonFileItemReader()).processor(catProcessor).writer(catCommonMybatisItemWriter()).build();}@Bean@StepScopepublic CommonFileItemReader<CafeCat> cafeCatCommonFileItemReader() {return new CommonFileItemReader<>(CafeCat.class);}@Bean@StepScopepublic CommonMybatisItemWriter<Cat> catCommonMybatisItemWriter() {return new CommonMybatisItemWriter<>(sqlSessionFactory,Cat.class.getSimpleName());}
}

四、继承公共CommonProcesor

package com.sl.processor;import com.sl.common.CommonProcessor;
import com.sl.entity.CafeCat;
import com.sl.entity.Cat;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.stereotype.Component;/*** @author shuliangzhao* @Title: CatProcessor* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/10 20:13*/
@Component
@StepScope
public class CatProcessor extends CommonProcessor<CafeCat, Cat> {@Overridepublic void processor(Cat o, CafeCat cafeCat) {o.setCataddress(cafeCat.getCataddress());o.setCatage(cafeCat.getCatage());o.setCatname(cafeCat.getCatname());}
}

五、执行job

执行完job,可以查看数据库已经有数据

以上例子就是读文件和写数据库的例子。

SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)相关推荐

  1. Python读文件与写文件

    Python读文件与写文件 Date TempHighF TempAvgF TempLowF 2019/1/10 72 65 57 2019/1/11 75 62 48 2019/1/12 67 57 ...

  2. 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)

    5.文件的基本操作 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 关闭文件 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 1.在系统中有一张系统的文件打开表,用 ...

  3. 文件操作,读文件、写文件、获取文件长度、删除文件、判断文件格式等。

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h&g ...

  4. Oracle PLSQL 读文件与写文件

    本文转自 http://hi.baidu.com/greatwqs/item/95c03c118b364a8e88a956c2 程序1:写入文件 CREATE OR REPLACE PROCEDURE ...

  5. Python:读文件和写文件

    1. 写文件 #! /usr/bin/python3 'makeTextFile.py -- create text file' import os def write_file(): "u ...

  6. Java读文件和写文件

    import java.io.*;public class FileTest {String path = "C:\\Users\\Desktop\\test.txt";File ...

  7. .dat文件写入byte类型数组_Go语言学习基础-读文件、写文件、行过滤器

    Reading File 读文件 读写文件是许多Go程序所需的基本任务.首先,我们将看一些读取文件的示例.读取文件需要检查是否出现调用错误. 最基本的文件读取任务是将文件的全部内容读到内存中iouti ...

  8. Python中读文件、写文件的操作方法

    ▶ Python中读文件操作方法 在Python编程中,从一个文件中读取数据可以通过以下3种方式. 1.使用read方法读取文件 read方法可以从文件中读取数据,该方法的定义语法如下: read(s ...

  9. Java打包后读文件和写文件操作方法

    javaIO操作在打包后经常会报出文件找不到的错误: java.io.FileNotFoundException: D:\package\bbb\history.xml (系统找不到指定的文件.) 那 ...

最新文章

  1. mysql od函数_Mysql数学函数不求人
  2. 怎么把本地的项目同时提交到两个仓库
  3. MM模块部分名词解释
  4. 简化Java中的异常处理
  5. thinkphp 内部函数 D()、F()、S()、C()、L()、A()、I()
  6. PE文件磁盘与内存映像结构图
  7. 从王者荣耀看设计模式(四.简单工厂模式)
  8. 新学到的Url形成方法
  9. 面试必问的 Redis:数据结构和基础概念
  10. 如何通过波形解析can总线数据
  11. 回扣应该怎么给——某人的经验
  12. 消除设计教室中的白人至上主义我与设计大师cheryl d miller的对话
  13. 这些职场道理不懂,你注定一辈子穷打工
  14. 计算机语言发展的三个阶段,机器语言、汇编语言与高级语言
  15. Nginx配置中的if判断
  16. angular-ng new
  17. input。file清除。js,jquery
  18. 《probabilistic robotics》学习笔记——卡尔曼滤波
  19. 计算机英语听说考试系统,广东省英语听说软件,广东高考英语听说训练。
  20. POJ3322bloxorz

热门文章

  1. SQLite学习手册(内置函数)
  2. 程序员的4种心态与4种将来
  3. java注释日志打印_java 注解结合 spring aop 实现自动输出日志
  4. 英语语法---短语总结
  5. 吴恩达深度学习笔记12-Course4-Week3【目标检测】
  6. Debug pip: Could not build wheels for _ which use PEP 517 and cannot be installed directly - Easy So
  7. tensorflow随笔-条件语句-tf.case
  8. 【深度学习】PyTorch 历史版本安装-祖传老代码运行刚需
  9. 【Python基础】Python数据分析实战之分布分析
  10. 【NLP】NLP实战篇之tensorflow2.0快速入门