xxl-job适配 达梦数据库,金仓数据库,postgresql数据库和oracle数据库

基于xxl-job V2.4.0版本改造,由于目前版本只支持mysql使用,在现实工作中会有 多种数据库的可能,所以花时间进行了一个简单的适配,将常用的数据库进行了一个简单的适配 具体适配是使用mybatis的databaseId进行适配的,这个只是暂时的解决办法, 许大神后续的计划中会把orm层改成jpa,这样就不用再单独区分数据库了,所以大家 没必要去改造成mybatis-plus或者通用mapper,后续根据官网的更新就好了,毕竟改造 太多,回头官网更新不太顺利。

"水平一般,能力有限,不足之处,还望多指教"
码云仓库地址

1、pom中引用数据库包(有可能会找不到,因为有些包在我自己私服上面),相信做技术的都是有办法搞定的


<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>
        <!-- 金仓 -->
        <dependency>
            <groupId>com.xxx.3rd</groupId>
            <artifactId>kingbase8</artifactId>
            <version>${kingbase.verison}</version>
        </dependency>
        <!-- 达梦 -->
        <dependency>
            <groupId>com.xxx.3rd</groupId>
            <artifactId>dm8</artifactId>
            <version>${dm8.verison}</version>
        </dependency>
        <!-- oracle -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>${oracle.verison}</version>
        </dependency>
        <!-- pgsql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>${pgsql.verison}</version>
        </dependency>

2、application配置文件修改

#mysql数据库配置

#spring.datasource.url=jdbc:mysql://10.30.100.73:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

#spring.datasource.username=root

#spring.datasource.password=123456

#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#人大金仓数据库配置

#spring.datasource.url=jdbc:kingbase8://10.30.100.76:54321/XXL_JOB?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding¤tSchema=PUBLIC,SYS_CATALOG

#spring.datasource.username=SYSTEM

#spring.datasource.password=password123

#spring.datasource.driver-class-name=com.kingbase8.Driver

##达梦数据库配置

#spring.datasource.url=jdbc:dm://10.30.100.76:5236/XXL_JOB?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8

#spring.datasource.username=XXL_JOB

#spring.datasource.password=password123

#spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver

###ORACLE数据库配置

spring.datasource.url=jdbc:oracle:thin:@10.30.100.10:1521:orcl

spring.datasource.username=XXL_JOB

spring.datasource.password=password123

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

####postgreSQL数据库配置

#spring.datasource.url=jdbc:postgresql://10.30.100.9:5432/xxl-job

#spring.datasource.username=xxl-job

#spring.datasource.password=password123

#spring.datasource.driver-class-name=org.postgresql.Driver

配置文件这里面有个小坑,因为oracle的特殊性,不支持自增,查询方式也不同,分页也

不一样,所以适配oracle比较复杂,就在数据库这块单独把oracle的mapper拉了出来


### mybatis

#mysql数据库配置mybatis

##oracle使用的语法

mybatis.mapper-locations=classpath:/mybatis-oracle-mapper/*Mapper.xml

##其他数据库使用的语法

#mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml

这块应该大家能理解,毕竟项目中一般只用一种,所以改一下就好了

##oracle使用的语法

spring.datasource.hikari.connection-test-query=SELECT * from dual

##其他数据库使用的语法

#spring.datasource.hikari.connection-test-query=SELECT 1

3、增加多数据库配置
 /**
     * 自动识别使用的数据库类型
     * 在mapper.xml中databaseId的值就是跟这里对应,
     * 如果没有databaseId选择则说明该sql适用所有数据库
     * */
    @Bean
    public DatabaseIdProvider getDatabaseIdProvider(){
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties properties = new Properties();
        properties.setProperty("Oracle","oracle");
        properties.setProperty("MySQL","mysql");
        properties.setProperty("DB2","db2");
        properties.setProperty("Derby","derby");
        properties.setProperty("H2","h2");
        properties.setProperty("HSQL","hsql");
        properties.setProperty("Informix","informix");
        properties.setProperty("MS-SQL","ms-sql");
        properties.setProperty("PostgreSQL","postgresql");
        properties.setProperty("Sybase","sybase");
        properties.setProperty("Hana","hana");
        properties.setProperty("DM","dm");
        properties.setProperty("KingbaseES","kingbase");
        properties.setProperty("KingBase8","kingbase");
        databaseIdProvider.setProperties(properties);
        return databaseIdProvider;
    }
4、在数据库中做多数据库兼容

    <select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
        SELECT <include refid="Base_Column_List" />
        FROM xxl_job_registry t
        <if test="_databaseId=='mysql'">
            WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
        </if>
        <if test="_databaseId=='dm'">
            WHERE t.update_time <![CDATA[ > ]]> (now()-1/(24*60*60)*#{timeout})
        </if>
        <if test="_databaseId=='kingbase'||_databaseId=='postgresql'">
            WHERE t.update_time <![CDATA[ > ]]> date '${nowTime}' - INTERVAL '${timeout} second'
        </if>
    </select>

码云仓库地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容