做生鲜管理系统的网站,软件技术专升本对口专业,php大型网站开发,公司网站 免费模板目录
案例需求
分析
项目准备
步骤1#xff1a;新开spring-batch-example
步骤2#xff1a;导入依赖
步骤3#xff1a;配置文件
步骤4#xff1a;建立employee表与employe_temp表
步骤5#xff1a;建立基本代码体系-domain-mapper-service-controller-mapper.xml …目录
案例需求
分析
项目准备
步骤1新开spring-batch-example
步骤2导入依赖
步骤3配置文件
步骤4建立employee表与employe_temp表
步骤5建立基本代码体系-domain-mapper-service-controller-mapper.xml
转视频版 到这整个Spring Batch 教程知识点就全部讲完了接下来就使用一个综合案例将讲过核心知识串联起来再来回顾一遍。
案例需求
1先动态生成50w条员工数据存放在employee.csv文件中
2启动作业异步读取employee.csv文件将读到数据写入到employee_temp表要求记录读与写消耗时间
3使用分区的方式将employee_temp表的数据读取并写入到employee表
分析
上面需求存在一定连贯性为了操作简单使用springMVC项目 每一个需求对应一个接口
1发起 /dataInit 初始化50w数据进入employee.csv文件
使用技术点SpringMVC IO
2发起/csvToDB 启动作业将employee.csv 数据写入employee_temp表, 记录读与写消耗时间
使用技术点SpringMVC ItemReader JobExecutionListener
ItemWriter (如果使用Mybatis框架MyBatisBatchItemWriter/MyBatisPagingItemReaderReader)
3发起/dbToDB 启动作业将employee_temp数据写入employee表
使用技术点SpringMVC ItemReader partitioner
ItemWriter(如果使用Mybatis框架MyBatisBatchItemWriter/MyBatisPagingItemReaderReader)
项目准备
步骤1新开spring-batch-example
步骤2导入依赖
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.3/versionrelativePath/
/parent
propertiesmaven.compiler.source11/maven.compiler.sourcemaven.compiler.target11/maven.compiler.target
/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-batch/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.12/version/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.2/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.14/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency
/dependencies步骤3配置文件
spring:datasource:username: rootpassword: adminurl: jdbc:mysql://127.0.0.1:3306/springbatch?serverTimezoneGMT%2B8useSSLfalseallowPublicKeyRetrievaltruedriver-class-name: com.mysql.cj.jdbc.Driver# 初始化数据库文件在依赖jar包中sql:init:schema-locations: classpath:org/springframework/batch/core/schema-mysql.sql#mode: alwaysmode: neverbatch:job:enabled: falsedruid:# 连接池配置#初始化连接池的连接数量 大小最小最大initial-size: 10min-idle: 10max-active: 20#配置获取连接等待超时的时间max-wait: 60000#配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间单位是毫秒min-evictable-idle-time-millis: 30000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: truetest-on-return: false# 是否缓存preparedStatement也就是PSCache 官方建议MySQL下建议关闭 个人建议如果想用SQL防火墙 建议打开pool-prepared-statements: falsemax-pool-prepared-statement-per-connection-size: 20mybatis:configuration:default-executor-type: batchjob:data:path: D:/spring-batch-example/
步骤4建立employee表与employe_temp表
CREATE TABLE employee (id int NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,age int DEFAULT NULL,sex int DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb3;
CREATE TABLE employee_temp (id int NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,age int DEFAULT NULL,sex int DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb3;
步骤5建立基本代码体系-domain-mapper-service-controller-mapper.xml domain
Setter
Getter
ToString
public class Employee {private Long id;private String name;private int age;private int sex;
}
mapper.java
public interface EmployeeMapper {/*** 添加*/int save(Employee employee);
}service接口
public interface IEmployeeService {/*** 保存*/void save(Employee employee);
}service接口实现类
Service
public class EmployeeServiceImpl implements IEmployeeService {Autowiredprivate EmployeeMapper employeeMapper;Overridepublic void save(Employee employee) {employeeMapper.save(employee);}
}
启动类
SpringBootApplication
EnableBatchProcessing
MapperScan(com.langfeiyes.exp.mapper)
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}
Mapper.xml
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.langfeiyes.exp.mapper.EmployeeMapperresultMap idBaseResultMap typecom.langfeiyes.exp.domain.Employeeresult columnid jdbcTypeINTEGER propertyid /result columnname jdbcTypeVARCHAR propertyname /result columnage jdbcTypeVARCHAR propertyage /result columnsex jdbcTypeVARCHAR propertysex //resultMapinsert idsave keyColumnid useGeneratedKeystrue keyPropertyidinsert into employee(id, name, age, sex) values(#{id},#{name},#{age},#{sex})/insert
/mapper
到这本篇就结束了欲知后事如何请听下回分解~
转视频版
看文字不过瘾可以切换视频版Spring Batch高效批处理框架实战