SpringBatch适配不同数据库的两种方法

一、配置JobRepository

@Configuration
@EnableBatchProcessing
public class TaskArrangeConfig extends DefaultBatchConfigurer {

    @Autowired
    private DataSource dataSource;

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private JobExplorer jobExplorer;

    @Autowired
    private JobRegistry jobRegistry;

    @Autowired
    private JobRepository jobRepository;

    @Autowired
    MapperConfig MapperConfig;


    @Bean
    public DataSourceTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource);
    }


    @Override
    protected 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();
    }

    @Bean
    public 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"){
        @Override
        public String getId() {
            return "oracle";
        }
    }

注意: 方法二需要创建同名类且包名相同放在SpringBoot启动类所在的同级目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值