• 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;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    二、覆盖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");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    DatabaseDriver 添加达梦驱动信息

      DM("DM DBMS","dm.jdbc.driver.DmDriver","dm.jdbc.driver.DmdbXADataSource","SELECT 'Hello' from DUAL"){
            @Override
            public String getId() {
                return "oracle";
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

  • 相关阅读:
    python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(8)毕业设计论文模板
    Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件
    利用idea基于java springboot框架开发环境搭建
    AI入门指南:探索人工智能的基础原理和实际应用
    【数据结构与算法】链表的分割
    02 MIT线性代数-矩阵消元 Elimination with matrices
    神经网络图怎么分析,画神经网络结构图
    Linux实现非阻塞输入
    测绘屠夫报表系统V1.0.0-beta
    前端页面城市显示级连
  • 原文地址:https://blog.csdn.net/luomo0203/article/details/133649874