一、配置JobRepository
@Configuration
@EnableBatchProcessing
public class TaskArrangeConfig extends DefaultBatchConfigurer {@Autowiredprivate DataSource dataSource;@Autowiredprivate JobLauncher jobLauncher;@Autowiredprivate JobExplorer jobExplorer;@Autowiredprivate JobRegistry jobRegistry;@Autowiredprivate JobRepository jobRepository;@AutowiredMapperConfig MapperConfig;@Beanpublic DataSourceTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSource);}@Overrideprotected JobRepository createJobRepository() throws Exception {JobRepositoryFactoryBean factoryBean = new JobRepositoryFactoryBean();if(MapperConfig.getDbType().equals(JDialectConsts.ORACLE) || MapperConfig.getDbType().equals(JDialectConsts.DAMENG)){factoryBean.setDatabaseType(DatabaseType.ORACLE.name());}else if(MapperConfig.getDbType().equals(JDialectConsts.MYSQL)){factoryBean.setDatabaseType(DatabaseType.MYSQL.name());}else {factoryBean.setDatabaseType(DatabaseType.H2.name());}factoryBean.setDataSource(dataSource);factoryBean.setTransactionManager(transactionManager());return factoryBean.getObject();}@Beanpublic JobOperator jobOperator(){SimpleJobOperator simpleJobOperator=new SimpleJobOperator();simpleJobOperator.setJobLauncher(jobLauncher);simpleJobOperator.setJobParametersConverter(new DefaultJobParametersConverter());simpleJobOperator.setJobRegistry(jobRegistry);simpleJobOperator.setJobExplorer(jobExplorer);simpleJobOperator.setJobRepository(jobRepository);return simpleJobOperator;}}
二、覆盖batch下support包中的类 (以达梦数据库为例)
修改 DefaultDataFieldMaxValueIncrementerFactory
getIncrementer 中添加DbType
DatabaseType 类添加数据库
public enum DatabaseType {DERBY("Apache Derby"),DB2("DB2"),DB2VSE("DB2VSE"),DB2ZOS("DB2ZOS"),DB2AS400("DB2AS400"),HSQL("HSQL Database Engine"),SQLSERVER("Microsoft SQL Server"),MYSQL("MySQL"),ORACLE("Oracle"),POSTGRES("PostgreSQL"),SYBASE("Sybase"),H2("H2"),SQLITE("SQLite"),DM("DM DBMS");
DatabaseDriver 添加达梦驱动信息
DM("DM DBMS","dm.jdbc.driver.DmDriver","dm.jdbc.driver.DmdbXADataSource","SELECT 'Hello' from DUAL"){@Overridepublic String getId() {return "oracle";}}
注意: 方法二需要创建同名类且包名相同放在SpringBoot启动类所在的同级目录