前面我们说到SpringBatch的启动依赖于数据库,为了看到我们批处理的调用情况,我们现在把H2数据库换成mysql数据库,因为我本地只安装了mysql数据库所以我这边是换成了mysql数据库,大家可以根据自己安装的数据库进行更换
我们需要先在pom中引入mysql和jdbc的依赖包
设置mysql数据库连接配置信息,在properties配置文件中配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springbatch
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.schema=classpath:/org/springframework/batch/core/schema-mysql.sql #指定脚本位置
spring.datasource.initialize-schema=always #如果已经存在表就不创建了
这样的话在项目启动的时候就会自动在batch目录下找到mysql的建表语句执行建表操作
但是有的时候mysql版本,还有一些自己环境的问题会导致建表失败,这个时候就需要我们使用下面的语句创建表了
CREATE TABLE `batch_job_instance` (
`JOB_INSTANCE_ID` bigint(20) NOT NULL COMMENT '主键。作业实例ID编号,根据BATCH_JOB_SEQ自动生成',
`VERSION` bigint(20) DEFAULT NULL COMMENT '版本号',
`JOB_NAME` varchar(100) NOT NULL COMMENT '作业名称。即在配置文件中定义的 job id 字段的内容',
`JOB_KEY` varchar(32) NOT NULL COMMENT '作业标识。根据作业参数序列化生成的标识。需要注意通过 JOB_NAME +JOB_KEY 能够唯一区分一个作业实例。如果是同一个Job,则JOB KEY一定不能相通,即作业参数不能相同。如果不是同一个JOB则KEY可以相同,也就说可以是同一个作业参数',
PRIMARY KEY (`JOB_INSTANCE_ID`),
UNIQUE KEY `JOB_INST_UN` (`JOB_NAME`,`JOB_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='作业实例表。用于存放Job的实例信息';
CREATE TABLE `batch_job_execution` (
`JOB_EXECUTION_ID` bigint(20) NOT NULL COMMENT '主键。作业执行器ID编号',
`VERSION` bigint(20) DEFAULT NULL COMMENT '版本号',
`JOB_INSTANCE_ID` bigint(20) NOT NULL COMMENT '作业实例ID编号',
`CREATE_TIME` datetime NOT NULL COMMENT '作业执行器创建时间',
`START_TIME` datetime DEFAULT NULL COMMENT '作业执行器开始执行时间',
`END_TIME` datetime DEFAULT NULL COMMENT '作业执行器结束时间',
`STATUS` varchar(10