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

news2024/11/18 15:32:47

一、配置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启动类所在的同级目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

预测性人工智能会彻底改变SIEM行业吗?

网络安全行业具有高度的活力,始终能够将最新和最优秀的技术融入其系统中。这背后有两个主要原因:首先,网络攻击不断演化,因此组织需要拥有先进技术以便检测复杂的攻击;其次,许多组织的网络架构非常复杂。 …

Unity2D创建帧动画片段

文章目录 概述为角色创建动画Animator组件创建动画片段状态转移 其他文章 概述 动画是游戏中一种使对象表现出运动或变换的方式。当涉及到动画时,我们通常就会用到Animator组件。它允许我们在Unity编辑器中创建、管理和控制这些动画,并将其应用于游戏对…

png图片给背景添加阴影

原图 效果图 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…

从互联网报告中得出5个关于ITSM的结论

IT服务管理即ITSM正在进入云端&#xff0c;并不断发展以支持移动员工&#xff0c;随着IT服务管理(ITSM)进入云端并发展为支持移动员工&#xff0c;它将迎来一个有趣的时代。ManageEngine的市场分析师表示&#xff0c;随着终端用户对ITSM解决方案的期望开始反映消费者应用程序的…

TikTok体育精彩瞬间:全球体育迷的天堂

体育是连接世界的一种语言&#xff0c;它能够跨越文化和国界&#xff0c;将人们汇聚在一起&#xff0c;共同感受比赛的激情和荣誉。 而在现代社交媒体的时代&#xff0c;TikTok已经成为了全球体育迷的天堂&#xff0c;为他们提供了前所未有的方式来分享和体验体育精彩瞬间。 T…

认识接口自动化测试

目录 1. 什么是接口测试 2. 基本流程 3. 需求分析 4. 用例设计 5. 脚本开发 6. 结果分析 7. 完整脚本 1. 什么是接口测试 顾名思义&#xff0c;接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以…

企业想过等保,其中2FA双因素认证手段必不可少

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显。等保2.0时代的到来&#xff0c;意味着企业和组织需要更加严格地保护自身的信息安全。而在这个过程中&#xff0c;双因素认证的重要性逐渐得到广泛认可。本文将探讨 2FA 双因素认证的重要性。 在了解 2FA 双因素认证的…

FRM-10102 错误解决办法

去服务器此路径 /u01/test/app/fs2/EBSapps/appl/au/12.0.0/resource 把缺失的文件拿到本地库即可

电压放大器在心电图中的作用是什么

心电图是一种常用的临床检测方法&#xff0c;用于评估心脏的电活动。在进行心电图检测时&#xff0c;为了保证测量结果的准确性和可靠性&#xff0c;需要使用一种特殊的电压放大器&#xff0c;即心电放大器&#xff0c;来增强心电信号并抑制噪音和干扰。 心电图信号具有微弱的幅…

“传统文化宣传片+虚拟人动捕设备”前景如何?

在数字化时代的发展下&#xff0c;动捕设备的加入&#xff0c;让传播传统文化的虚拟人更具生动表现&#xff0c;拉近人们与传统文化的距离&#xff0c;通过虚拟人动作捕捉动画宣传片&#xff0c;引起更多人对传统文化的关注与传承。 *图片源于网络 深圳文博会创意短片《嗨ICIF…

一文生成猫眼电影热榜词云

1.爬取猫眼电影热榜数据 此次爬取的是电影票房的热榜电影名称&#xff0c;具体网站网址为猫眼电影热榜&#xff0c;经过实验观察后发现&#xff0c;此处的数据是通过ajax异步加载的&#xff0c;如果不相信可以使用request对当前网站网址发送请求&#xff0c;会发现无法获取电影…

基于springboot实现职称评审管理系统演示【项目源码+论文说明】分享

基于springboot实现职称评审管理系统项目演示 摘要 不管是从事哪个行业、对于职称是对一个对个人的最高荣誉&#xff0c;有通过科技手段、农业、工业、教育等都有评职称&#xff0c;开发一套职称评审管理系统就很有必要了。职称评审管理系统是以实际运用为开发背景&#xff0c…

移远通信EG916Q-GL Cat 1 bis模组亮相MWC Las Vegas 2023

9月27日&#xff0c;在MWC Las Vegas 2023期间&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;面向全球市场推出更具性价比的Cat 1 bis模组EG916Q-GL。该模组基于高通QCX216 LTE物联网调制解调器&#xff0c;非常适用于全球范围内的各种应用场景&…

人机言语交互模型的评估要素

智能客服中的言语交互模型评估要素&#xff0c;主要包括以下几个方面&#xff1a; 有效性&#xff1a;指模型能否准确识别和理解用户的言语意图&#xff0c;以及生成正确和合适的回答。可以通过比较模型生成的回答与人工回答的准确率来评估。流畅性&#xff1a;指模型在回答问…

力扣第572题 另一棵树的子树 c++深度(DFS)注释版

题目 572. 另一棵树的子树 简单 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有…

ES6 class类关键字super

super关键字 在 JavaSCript 中&#xff0c;能通过 extends 关键字去继承父类 super 关键字在子类中有以下用法&#xff1a; 当成函数调用 super() 作为 "属性查询" super.prop 和 super[expr] super() super 作为函数调用时&#xff0c;代表父类的构造函数。 ES6 要求…

如何设计一条大型PLC生产线系统

今日话题&#xff0c;如何设计一条大型PLC生产线系统&#xff0c;设计一条大型PLC生产线系统实际上涉及通用系统设计的问题。以机床为例&#xff0c;它的核心架构包括数控面板和多台伺服机&#xff0c;这些伺服机具有很强的通用性&#xff0c;它们作为从站响应数控面板的信号。…

在原生html中使用less

引入less <link rel"stylesheet/less" href"./lessDemo.less" /><script src"./js/less.min.js"></script> less.min.js文件下载地址:https://github.com/less/less.js 注意&#xff1a;less文件在前&#xff0c;js文件在后…

Langchain-Chatchat项目:1-整体介绍

基于Langchain与ChatGLM等语言模型的本地知识库问答应用实现。项目中默认LLM模型改为THUDM/chatglm2-6b[2]&#xff0c;默认Embedding模型改为moka-ai/m3e-base[3]。 一.项目介绍 1.实现原理   本项目实现原理如下图所示&#xff0c;过程包括加载文件->读取文本->文本…