javascript
SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)
文章目錄
- 一、抽取順序讀取數(shù)據(jù)庫公共Writer
- 二、mapper配置文件
- 三、寫數(shù)據(jù)庫的job
- 四、繼承公共CommonProcesor
- 五、執(zhí)行job
前言:我們在日常開發(fā)中可能會遇到寫數(shù)據(jù)庫,SpringBatch封裝的也有寫數(shù)據(jù)庫的Writer,但是我們這次做實驗用的是Mybatis封裝的MyBatisBatchItemWriter
代碼已上傳GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch
注意:本章job使用的所有實體類均是上一章SpringBatch讀數(shù)據(jù)庫(MyBatisPagingItemReader)(三)的實體,所以這一章
就不在一一列舉了。
SpringBatch其它文章直通車:
SpringBatch讀單個文件(FlatFileItemReader)和寫單個文件(FlatFileItemWriter)(一)
SpringBatch順序讀取多文件(MultiResourceItemReader)和順序?qū)懳募?MultiResourceItemWriter)(二)
SpringBatch讀數(shù)據(jù)庫(MyBatisPagingItemReader)(三)
SpringBatch讀文件(FlatFileItemReader)寫據(jù)庫(MyBatisBatchItemWriter)(四)
SpringBatch 監(jiān)聽器之Job監(jiān)聽器(JobExecutionListener)和Step監(jiān)聽器(StepExecutionListener)(五)
SpringBatch 監(jiān)聽器之Chunk監(jiān)聽器(ChunkListener)和Skip監(jiān)聽器(SkipListener)(六)
一、抽取順序讀取數(shù)據(jù)庫公共Writer
CommonMybatisItemWriter繼承MyBatisBatchItemWriter
package com.sl.common;import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.batch.MyBatisBatchItemWriter;/*** 寫數(shù)據(jù)庫* @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"><!-- 可根據(jù)自己的需求,是否要使用 --><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>三、寫數(shù)據(jù)庫的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());} }五、執(zhí)行job
執(zhí)行完job,可以查看數(shù)據(jù)庫已經(jīng)有數(shù)據(jù)
以上例子就是讀文件和寫數(shù)據(jù)庫的例子。
總結(jié)
以上是生活随笔為你收集整理的SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBatch顺序读取多文件(M
- 下一篇: SpringBatch 监听器之Job监