xxl-job适配kingbase、pg、mssql、dm、oracle等国产数据库以及其他多数据库 ...

打印 上一主题 下一主题

主题 1016|帖子 1016|积分 3048

目录
1.概述
1.1版本
2.改动的地方总结
2.1依赖
2.2各数据库jdbc配置
2.3 JobLogReportHelper.java 文件修改
2.4 各mapper.xml修改
2.4.1 分页的适配
2.4.2 AS语法的适配
2.4.3 ``的适配
2.4.4 date函数的适配
2.4.5 oracle适配修改
2.5 sql脚本
3. 具体办理方案
3.1 各数据库sql
3.1.1 Oracle
3.1.2 达梦dm
3.1.3 高斯 gaussdb
3.1.4 人大金仓 kingbase
3.1.5 postgresql
3.1.6 sqlserver
3.2 JobLogReportHelper.java 文件修改
3.3 mapper的修改
3.3.1 XxlJobGroupMapper.xml
3.3.2 XxlJobInfoMapper.xml
3.3.3 XxlJobLogGlueMapper.xml
3.3.4 XxlJobLogMapper.xml
3.3.5 XxlJobLogReportMapper.xml
3.3.6 XxlJobRegistryMapper.xml
3.3.7 XxlJobUserMapper.xml
3.4 自界说DatabaseIdProvider




1.概述

本社畜最近公司研发的产品须要一些定时job相关的功能,最后选定xxl-job,但是最头疼的一点就是所有的产品都须要过信创,那么就意味着要兼容国产数据库,什么人大金仓、达梦、海量、华为高斯gaussDB、优炫、GBase等等,最后本社畜翻了各种数据库官方文档,最后整理出了一版兼容以上数据库的案例,本人已经测试过了,完美运行。整理不易,望诸君高台贵手,点赞支持。
1.1版本

xxl-job:2.4.0
其他数据库没有特殊版本,根本上都能适配,除开有些特殊数据库,比如达梦,须要注意跑脚本的客户端,比如用dbeaver跑dm的数据库,就会有兼容问题:如果建表语句中有大字段,创建索引用单独语句就会有问题,等等一些另类的问题;但是使用达梦官方的客户端就不会存在这个问题
2.改动的地方总结

先把改动总结放在前面,省的文章太长不好找,这样一览无余,哪些地方须要修改。
2.1依赖

依赖这个地方看需求,如果你是打包完成之后用fatjar跑的项目,那么可以不用改项目的maven依赖,只须要你的项目支持-Dloader.patch参数指定加载外部依赖jar就行(maven-assembly-plugin的机制,在这里就不多说了),然后将须要的jdbc依赖放进指定的目录下即可,运行的时间会加载到这些jar;如果你须要将这些jdbc的依赖打进你的项目fatjar中,那么就须要修改你的maven依赖,具体如下:
        注意:有些jdbc的驱动是maven中央堆栈里没有的,就须要用本地依赖systemPath的方式,systemPath具体的配置目录须要根据每个人的实际情况举行修改
  1. <!--pg-->
  2.         <dependency>
  3.             <groupId>org.postgresql</groupId>
  4.             <artifactId>postgresql</artifactId>
  5.             <version>42.2.19</version>
  6.         </dependency>
  7.         <!--高斯的依赖-->
  8.         <dependency>
  9.             <groupId>gsjdbc</groupId>
  10.             <artifactId>huawei.gauss200.jdb</artifactId>
  11.             <version>1.0</version>
  12.             <scope>system</scope>
  13.             <systemPath>${project.basedir}/src/main/resources/lib/gsjdbc200.jar</systemPath>
  14.         </dependency>
  15.         <!--人大金仓-->
  16.         <dependency>
  17.             <groupId>kingbase8</groupId>
  18.             <artifactId>kingbase8.jdb</artifactId>
  19.             <version>1.0</version>
  20.             <scope>system</scope>
  21.             <systemPath>${project.basedir}/src/main/resources/lib/kingbase8-8.2.0.jar</systemPath>
  22.         </dependency>
  23.         <!--gbase-->
  24.         <dependency>
  25.             <groupId>gbase</groupId>
  26.             <artifactId>gbase.jdb</artifactId>
  27.             <version>1.0</version>
  28.             <scope>system</scope>
  29.             <systemPath>${project.basedir}/src/main/resources/lib/gbase-connector-java-9.5.0.1-build1-bin.jar</systemPath>
  30.         </dependency>
  31.         <!--优炫-->
  32.         <dependency>
  33.             <groupId>uxdb</groupId>
  34.             <artifactId>uxdb.jdb</artifactId>
  35.             <version>1.0</version>
  36.             <scope>system</scope>
  37.             <systemPath>${project.basedir}/src/main/resources/lib/uxdb-jdbc-4.2.jar</systemPath>
  38.         </dependency>
  39.         <!--达梦-->
  40.         <dependency>
  41.             <groupId>dm</groupId>
  42.             <artifactId>dm8.jdb</artifactId>
  43.             <version>1.0</version>
  44.             <scope>system</scope>
  45.             <systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
  46.         </dependency>
  47.         <!--sqlserver-->
  48.         <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
  49.         <dependency>
  50.             <groupId>com.microsoft.sqlserver</groupId>
  51.             <artifactId>mssql-jdbc</artifactId>
  52.             <version>12.4.1.jre8</version>
  53.         </dependency>
  54.         <!--oracle-->
  55.         <!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
  56.         <dependency>
  57.             <groupId>com.oracle.ojdbc</groupId>
  58.             <artifactId>ojdbc8</artifactId>
  59.             <version>19.3.0.0</version>
  60.         </dependency>
复制代码
2.2各数据库jdbc配置

  1. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/a_xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
  2. spring.datasource.username=xxxx
  3. spring.datasource.password=xxxx
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. #spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/xxxx
  6. #spring.datasource.username=xxxx
  7. #spring.datasource.password=xxxx
  8. #spring.datasource.driver-class-name=org.postgresql.Driver
  9. #spring.datasource.url=jdbc:kingbase8://127.0.0.1:54321/xxxx
  10. #spring.datasource.username=xxxx
  11. #spring.datasource.password=xxxx
  12. #spring.datasource.driver-class-name=com.kingbase8.Driver
  13. #spring.datasource.url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xxxx;SelectMethod=Cursor;trustServerCertificate=true
  14. #spring.datasource.username=xxxx
  15. #spring.datasource.password=xxxx
  16. #spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
  17. #spring.datasource.url=jdbc:gaussdb://127.0.0.1:15400/xxxx
  18. #spring.datasource.username=xxxx
  19. #spring.datasource.password=xxxx
  20. #spring.datasource.driver-class-name=com.huawei.gauss200.jdbc.Driver
  21. #spring.datasource.url=jdbc:dm://localhost:5236
  22. #spring.datasource.username=SYSDBA
  23. #spring.datasource.password=123456789
  24. #spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
  25. #spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
  26. #spring.datasource.username=xxxx
  27. #spring.datasource.password=xxxx
  28. #spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
复制代码
2.3 JobLogReportHelper.java 文件修改

这里面须要改以下源码以适配各种数据库的特性:有些数据库大小写敏感、有些是驼峰等等,具体修改内容见下面
2.4 各mapper.xml修改

mapper.xml的改动大概分为几类:
2.4.1 分页的适配

       注意:国产数据库大部分都是pg上改的,以是下面没列出来的数据库都可以套用pg
mysqloracledmkingbasepgsqlserver
limit A
limit A, B
limit B OFFSET A
rownum/rownumber
top(pagesize)
2.4.2 AS语法的适配

        as语法主要区别在于oracle,oracle不支持表名的as,字段的as是支持的,所有数据库都支持tableName table别名的写法,以是为了通配,把所有mapper.xml里面的as都去掉即可通配
2.4.3 ``的适配

xxl-job里面默认是mysql,以是所有的mapper里面的字段、表名都加上了mysql特有的``,但是其他数据库不支持,有些数据库为了区分关键字用的是" ",有些是[ ],但是都支持不加,条件是字段和表名都没有关键字辩论,正好,xxl-job里面没有这些关键字辩论的顾虑,以是为了通配,把所有的mapper里面的 ` ` 全局扫描更换成空字符串就行
2.4.4 date函数的适配

date函数在xxl中使用都在XxlJobRegisterMapper.xml中:findDead 查询和 findAll 查询
数据库支持的函数
MySQLDATE_ADD()
SQL serverDATEADD()
kingbasedate ' '
pgselect NOW()
oraclenumtodsinterval()
dmnumtodsinterval()
2.4.5 oracle适配修改

主要是oracle的特殊性,比如:insert的时间须要返回主键,但是按照xxl-job的写法显然是不支持的,须要改造以下,然后是save、update须要指定字段的jdbcType,否则会有转换问题等
具体的修改见下面详情
2.5 sql脚本

        xxl-job的表主键都是用的自增,以是适配其他数据库的核心问题是办理id自增问题,不支持自增函数的就须要使用序列来实现。
3. 具体办理方案

依赖和jdbc的配置在这里就不列了,参考2.1和2.2即可
3.1 各数据库sql

        注意:因为XXL_JOB_GROUP、XXL_JOB_INFO、XXL_JOB_USER三种表会默认插入一条数据,以是对应的自增id序列不能从1开始,为了统一,省的麻烦,就给每个id自增序列都从2起始就行(ps:好像我给有的从10开始了,问题不大,只要不是从1开始就行)。
3.1.1 Oracle

  1. CREATE SEQUENCE XXL_JOB_INFO_SEQ_ID
  2.   START WITH 2
  3.   INCREMENT BY 1
  4.   NOMAXVALUE;
  5. CREATE TABLE XXL_JOB_INFO (
  6.     ID                          NUMBER(10,0)          DEFAULT XXL_JOB_INFO_SEQ_ID.NEXTVAL,
  7.     JOB_GROUP                   NUMBER(10,0)          NOT NULL,
  8.     JOB_DESC                    VARCHAR2(255 CHAR)    NOT NULL,
  9.     ADD_TIME                    DATE         DEFAULT NULL,
  10.     UPDATE_TIME                 DATE         DEFAULT NULL,
  11.     AUTHOR                      VARCHAR2(64 CHAR)     DEFAULT NULL,
  12.     ALARM_EMAIL                 VARCHAR2(255 CHAR)    DEFAULT NULL,
  13.     SCHEDULE_TYPE               VARCHAR2(50 CHAR)     DEFAULT 'NONE',
  14.     SCHEDULE_CONF               VARCHAR2(128 CHAR)    DEFAULT NULL,
  15.     MISFIRE_STRATEGY            VARCHAR2(50 CHAR)     DEFAULT 'DO_NOTHING',
  16.     EXECUTOR_ROUTE_STRATEGY     VARCHAR2(50 CHAR)     DEFAULT NULL,
  17.     EXECUTOR_HANDLER            VARCHAR2(255 CHAR)    DEFAULT NULL,
  18.     EXECUTOR_PARAM              VARCHAR2(512 CHAR)    DEFAULT NULL,
  19.     EXECUTOR_BLOCK_STRATEGY     VARCHAR2(50 CHAR)     DEFAULT NULL,
  20.     EXECUTOR_TIMEOUT            NUMBER(10,0)          DEFAULT '0',
  21.     EXECUTOR_FAIL_RETRY_COUNT   NUMBER(10,0)          DEFAULT '0',
  22.     GLUE_TYPE                   VARCHAR2(50 CHAR)     NOT NULL,
  23.     GLUE_SOURCE                 CLOB,
  24.     GLUE_REMARK                 VARCHAR2(128 CHAR)    DEFAULT NULL,
  25.     GLUE_UPDATETIME             DATE          DEFAULT NULL,
  26.     CHILD_JOBID                 VARCHAR2(255 CHAR)    DEFAULT NULL,
  27.     TRIGGER_STATUS              NUMBER(10,0)          DEFAULT 0,
  28.     TRIGGER_LAST_TIME           NUMBER(38,0)          DEFAULT 0,
  29.     TRIGGER_NEXT_TIME           NUMBER(38,0)          DEFAULT 0,
  30.     PRIMARY KEY (ID)
  31. ) ;
  32. COMMENT ON COLUMN XXL_JOB_INFO.JOB_GROUP                    IS '执行器主键ID';
  33. COMMENT ON COLUMN XXL_JOB_INFO.AUTHOR                       IS '作者';
  34. COMMENT ON COLUMN XXL_JOB_INFO.ALARM_EMAIL                  IS '报警邮件';
  35. COMMENT ON COLUMN XXL_JOB_INFO.SCHEDULE_TYPE                IS '调度类型';
  36. COMMENT ON COLUMN XXL_JOB_INFO.SCHEDULE_CONF                IS '调度配置,值含义取决于调度类型';
  37. COMMENT ON COLUMN XXL_JOB_INFO.MISFIRE_STRATEGY             IS '调度过期策略';
  38. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_ROUTE_STRATEGY      IS '执行器路由策略';
  39. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_HANDLER             IS '执行器任务handler';
  40. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_PARAM               IS '执行器任务参数';
  41. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_BLOCK_STRATEGY      IS '阻塞处理策略';
  42. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_TIMEOUT             IS '任务执行超时时间,单位秒';
  43. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_FAIL_RETRY_COUNT    IS '失败重试次数';
  44. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_TYPE                    IS 'GLUE类型';
  45. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_SOURCE                  IS 'GLUE源代码';
  46. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_REMARK                  IS 'GLUE备注';
  47. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_UPDATETIME              IS 'GLUE更新时间';
  48. COMMENT ON COLUMN XXL_JOB_INFO.CHILD_JOBID                  IS '子任务ID,多个逗号分隔';
  49. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_STATUS               IS '调度状态:0-停止,1-运行';
  50. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_LAST_TIME            IS '上次调度时间';
  51. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_NEXT_TIME            IS '下次调度时间';
  52. -- ----------------------------
  53. -- Table structure for XXL_JOB_LOG
  54. -- ----------------------------
  55. CREATE SEQUENCE XXL_JOB_LOG_SEQ_ID
  56.   START WITH 2
  57.   INCREMENT BY 1
  58.   NOMAXVALUE;
  59. CREATE TABLE XXL_JOB_LOG (
  60.     ID                          NUMBER(38,0)          DEFAULT XXL_JOB_LOG_SEQ_ID.NEXTVAL,
  61.     JOB_GROUP                   NUMBER(10,0)          NOT NULL,
  62.     JOB_ID                      NUMBER(10,0)          NOT NULL,
  63.     EXECUTOR_ADDRESS            VARCHAR2(255 CHAR)    DEFAULT NULL,
  64.     EXECUTOR_HANDLER            VARCHAR2(255 CHAR)    DEFAULT NULL,
  65.     EXECUTOR_PARAM              VARCHAR2(512 CHAR)    DEFAULT NULL,
  66.     EXECUTOR_SHARDING_PARAM     VARCHAR2(20 CHAR)     DEFAULT NULL,
  67.     EXECUTOR_FAIL_RETRY_COUNT   NUMBER(10,0)          DEFAULT 0,
  68.     TRIGGER_TIME                DATE          DEFAULT NULL,
  69.     TRIGGER_CODE                NUMBER(10,0)          NOT NULL,
  70.     TRIGGER_MSG                 CLOB,
  71.     HANDLE_TIME                 DATE          DEFAULT NULL,
  72.     HANDLE_CODE                 NUMBER(10,0)          NOT NULL,
  73.     HANDLE_MSG                  CLOB,
  74.     ALARM_STATUS                NUMBER(10,0)          DEFAULT 0,
  75.     PRIMARY KEY (ID)
  76. ) ;
  77. CREATE INDEX I_TRIGGER_TIME ON XXL_JOB_LOG (TRIGGER_TIME ASC);
  78. CREATE INDEX I_HANDLE_CODE ON XXL_JOB_LOG (HANDLE_CODE ASC);
  79. COMMENT ON COLUMN XXL_JOB_LOG.JOB_GROUP                     IS '执行器主键ID';
  80. COMMENT ON COLUMN XXL_JOB_LOG.JOB_ID                        IS '任务,主键ID';
  81. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_ADDRESS              IS '执行器地址,本次执行的地址';
  82. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_HANDLER              IS '执行器任务handler';
  83. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_PARAM                IS '执行器任务参数';
  84. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_SHARDING_PARAM       IS '执行器任务分片参数,格式如 1/2';
  85. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_FAIL_RETRY_COUNT     IS '失败重试次数';
  86. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_TIME                  IS '调度-时间';
  87. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_CODE                  IS '调度-结果';
  88. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_MSG                   IS '调度-日志';
  89. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_TIME                   IS '执行-时间';
  90. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_CODE                   IS '执行-状态';
  91. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_MSG                    IS '执行-日志';
  92. COMMENT ON COLUMN XXL_JOB_LOG.ALARM_STATUS                  IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';
  93. -- ----------------------------
  94. -- Table structure for XXL_JOB_LOG_REPORT
  95. -- ----------------------------
  96. CREATE SEQUENCE XXL_JOB_LOG_REPORT_SEQ_ID
  97.   START WITH 2
  98.   INCREMENT BY 1
  99.   NOMAXVALUE;
  100. CREATE TABLE XXL_JOB_LOG_REPORT (
  101.     ID                          NUMBER(10,0)          DEFAULT XXL_JOB_LOG_REPORT_SEQ_ID.NEXTVAL,
  102.     TRIGGER_DAY                 DATE                  DEFAULT NULL,
  103.     RUNNING_COUNT               NUMBER(10,0)          DEFAULT  0,
  104.     SUC_COUNT                   NUMBER(10,0)          DEFAULT  0,
  105.     FAIL_COUNT                  NUMBER(10,0)          DEFAULT  0,
  106.     UPDATE_TIME                 DATE                  DEFAULT NULL,
  107.      PRIMARY KEY (ID)
  108. );
  109. CREATE UNIQUE INDEX I_TRIGGER_DAY ON XXL_JOB_LOG_REPORT (TRIGGER_DAY ASC);
  110. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.TRIGGER_DAY            IS '调度-时间';
  111. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.RUNNING_COUNT          IS '运行中-日志数量';
  112. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.SUC_COUNT              IS '执行成功-日志数量';
  113. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.FAIL_COUNT             IS '执行失败-日志数量';
  114. -- ----------------------------
  115. -- Table structure for XXL_JOB_LOGGLUE
  116. -- ----------------------------
  117. CREATE SEQUENCE XXL_JOB_LOGGLUE_SEQ_ID
  118.   START WITH 2
  119.   INCREMENT BY 1
  120.   NOMAXVALUE;
  121. CREATE TABLE XXL_JOB_LOGGLUE (
  122.     ID                          NUMBER(10,0)          DEFAULT XXL_JOB_LOGGLUE_SEQ_ID.NEXTVAL,
  123.     JOB_ID                      NUMBER(10,0)          NOT NULL,
  124.     GLUE_TYPE                   VARCHAR2(50 CHAR)     DEFAULT NULL,
  125.     GLUE_SOURCE                 CLOB,
  126.     GLUE_REMARK                 VARCHAR2(128 CHAR)    NOT NULL,
  127.     ADD_TIME                    DATE          DEFAULT NULL,
  128.     UPDATE_TIME                 DATE          DEFAULT NULL,
  129.     PRIMARY KEY (ID)
  130. ) ;
  131. COMMENT ON COLUMN XXL_JOB_LOGGLUE.JOB_ID                    IS '任务,主键ID';
  132. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_TYPE                 IS 'GLUE类型';
  133. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_SOURCE               IS 'GLUE源代码';
  134. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_REMARK               IS 'GLUE备注';
  135. -- ----------------------------
  136. -- Table structure for XXL_JOB_REGISTRY
  137. -- ----------------------------
  138. CREATE SEQUENCE XXL_JOB_REGISTRY_SEQ_ID
  139.   START WITH 2
  140.   INCREMENT BY 1
  141.   NOMAXVALUE;
  142. CREATE TABLE XXL_JOB_REGISTRY (
  143.     ID                          NUMBER(10,0)          DEFAULT XXL_JOB_REGISTRY_SEQ_ID.NEXTVAL,
  144.     REGISTRY_GROUP              VARCHAR2(50 CHAR)     NOT NULL,
  145.     REGISTRY_KEY                VARCHAR2(255 CHAR)    NOT NULL,
  146.     REGISTRY_VALUE              VARCHAR2(255 CHAR)    NOT NULL,
  147.     UPDATE_TIME                 DATE          DEFAULT NULL,
  148.     PRIMARY KEY (ID)
  149. ) ;
  150. CREATE INDEX I_G_K_V ON XXL_JOB_REGISTRY (REGISTRY_GROUP,REGISTRY_KEY,REGISTRY_VALUE ASC);
  151. -- ----------------------------
  152. -- Table structure for XXL_JOB_GROUP
  153. -- ----------------------------
  154. CREATE SEQUENCE XXL_JOB_GROUP_SEQ_ID
  155.   START WITH 2
  156.   INCREMENT BY 1
  157.   NOMAXVALUE;
  158. CREATE TABLE XXL_JOB_GROUP (
  159.     ID                          NUMBER(10,0)          DEFAULT XXL_JOB_GROUP_SEQ_ID.NEXTVAL,
  160.     APP_NAME                    VARCHAR2(64 CHAR)     NOT NULL,
  161.     TITLE                       VARCHAR2(64 CHAR)     NOT NULL,
  162.     ADDRESS_TYPE                NUMBER(10,0)          DEFAULT 0,
  163.     ADDRESS_LIST                VARCHAR2(512 CHAR),
  164.     UPDATE_TIME                 DATE          DEFAULT NULL,
  165.     PRIMARY KEY (ID)
  166. ) ;
  167. COMMENT ON COLUMN XXL_JOB_GROUP.APP_NAME                    IS '执行器AppName';
  168. COMMENT ON COLUMN XXL_JOB_GROUP.TITLE                       IS '执行器名称';
  169. COMMENT ON COLUMN XXL_JOB_GROUP.ADDRESS_TYPE                IS '执行器地址类型:0=自动注册、1=手动录入';
  170. COMMENT ON COLUMN XXL_JOB_GROUP.ADDRESS_LIST                IS '执行器地址列表,多地址逗号分隔';
  171. -- ----------------------------
  172. -- Table structure for XXL_JOB_USER
  173. -- ----------------------------
  174. CREATE SEQUENCE XXL_JOB_USER_SEQ_ID
  175.   START WITH 2
  176.   INCREMENT BY 1
  177.   NOMAXVALUE;
  178. CREATE TABLE XXL_JOB_USER (
  179.     ID                          NUMBER(10,0)          DEFAULT XXL_JOB_USER_SEQ_ID.NEXTVAL,
  180.     USERNAME                    VARCHAR2(50 CHAR)     NOT NULL ,
  181.     PASSWORD                    VARCHAR2(50 CHAR)     NOT NULL ,
  182.     ROLE                        NUMBER(10,0)          NOT NULL ,
  183.     PERMISSION                  VARCHAR2(255 CHAR)    DEFAULT NULL,
  184.     PRIMARY KEY (ID)
  185. ) ;
  186. CREATE UNIQUE INDEX I_USERNAME ON XXL_JOB_USER (USERNAME ASC);
  187. COMMENT ON COLUMN XXL_JOB_USER.USERNAME                     IS '账号';
  188. COMMENT ON COLUMN XXL_JOB_USER.PASSWORD                     IS '密码';
  189. COMMENT ON COLUMN XXL_JOB_USER.ROLE                         IS '角色:0-普通用户、1-管理员';
  190. COMMENT ON COLUMN XXL_JOB_USER.PERMISSION                   IS '权限:执行器ID列表,多个逗号分割';
  191. -- ----------------------------
  192. -- Table structure for XXL_JOB_LOCK
  193. -- ----------------------------
  194. CREATE TABLE XXL_JOB_LOCK (
  195.     LOCK_NAME                   VARCHAR2(50 CHAR)     NOT NULL,
  196.     PRIMARY KEY (LOCK_NAME)
  197. ) ;
  198. -- 2023-12-27 适配xxl-job
  199. INSERT INTO "XXL_JOB_GROUP"("ID", "APP_NAME", "TITLE", "ADDRESS_TYPE", "ADDRESS_LIST", "UPDATE_TIME") VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'));
  200. INSERT INTO "XXL_JOB_INFO"("ID", "JOB_GROUP", "JOB_DESC", "ADD_TIME", "UPDATE_TIME", "AUTHOR", "ALARM_EMAIL", "SCHEDULE_TYPE", "SCHEDULE_CONF", "MISFIRE_STRATEGY", "EXECUTOR_ROUTE_STRATEGY", "EXECUTOR_HANDLER", "EXECUTOR_PARAM", "EXECUTOR_BLOCK_STRATEGY", "EXECUTOR_TIMEOUT", "EXECUTOR_FAIL_RETRY_COUNT", "GLUE_TYPE", "GLUE_SOURCE", "GLUE_REMARK", "GLUE_UPDATETIME", "CHILD_JOBID") VALUES (1, 1, '测试任务1', TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'), TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'), 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'), '');
  201. INSERT INTO "XXL_JOB_USER"("ID", "USERNAME", "PASSWORD", "ROLE", "PERMISSION") VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
  202. INSERT INTO "XXL_JOB_LOCK"("LOCK_NAME") VALUES ('schedule_lock');
复制代码
3.1.2 达梦dm

  1. CREATE SEQUENCE XXL_JOB_INFO_SEQ_ID
  2.     INCREMENT BY 1                --每次+1
  3.     START WITH 10                --从1开始
  4.     nomaxvalue                        --不限最大值
  5.     nominvalue                        --不限最小值
  6.     cache 20;                        --设置取值缓存数为20
  7. DROP TABLE IF EXISTS XXL_JOB_INFO;
  8. CREATE TABLE "XXL_JOB_INFO" (
  9.     "ID"                          NUMBER(10,0)          DEFAULT XXL_JOB_INFO_SEQ_ID.NEXTVAL,
  10.     "JOB_GROUP"                   NUMBER(10,0)          NOT NULL,
  11.     "JOB_DESC"                    VARCHAR2(255 CHAR)    NOT NULL,
  12.     "ADD_TIME"                    TIMESTAMP         DEFAULT NULL,
  13.     "UPDATE_TIME"                 TIMESTAMP         DEFAULT NULL,
  14.     "AUTHOR"                      VARCHAR2(64 CHAR)     DEFAULT NULL,
  15.     "ALARM_EMAIL"                 VARCHAR2(255 CHAR)    DEFAULT NULL,
  16.     "SCHEDULE_TYPE"               VARCHAR2(50 CHAR)     DEFAULT 'NONE',
  17.     "SCHEDULE_CONF"               VARCHAR2(128 CHAR)    DEFAULT NULL,
  18.     "MISFIRE_STRATEGY"            VARCHAR2(50 CHAR)     DEFAULT 'DO_NOTHING',
  19.     "EXECUTOR_ROUTE_STRATEGY"     VARCHAR2(50 CHAR)     DEFAULT NULL,
  20.     "EXECUTOR_HANDLER"            VARCHAR2(255 CHAR)    DEFAULT NULL,
  21.     "EXECUTOR_PARAM"              VARCHAR2(512 CHAR)    DEFAULT NULL,
  22.     "EXECUTOR_BLOCK_STRATEGY"     VARCHAR2(50 CHAR)     DEFAULT NULL,
  23.     "EXECUTOR_TIMEOUT"            NUMBER(10,0)          DEFAULT '0',
  24.     "EXECUTOR_FAIL_RETRY_COUNT"   NUMBER(10,0)          DEFAULT '0',
  25.     "GLUE_TYPE"                   VARCHAR2(50 CHAR)     NOT NULL,
  26.     "GLUE_SOURCE"                 CLOB,
  27.     "GLUE_REMARK"                 VARCHAR2(128 CHAR)    DEFAULT NULL,
  28.     "GLUE_UPDATETIME"             TIMESTAMP          DEFAULT NULL,
  29.     "CHILD_JOBID"                 VARCHAR2(255 CHAR)    DEFAULT NULL,
  30.     "TRIGGER_STATUS"              NUMBER(10,0)          DEFAULT 0,
  31.     "TRIGGER_LAST_TIME"           NUMBER(38,0)          DEFAULT 0,
  32.     "TRIGGER_NEXT_TIME"           NUMBER(38,0)          DEFAULT 0,
  33.     PRIMARY KEY (ID)
  34. ) ;
  35. COMMENT ON COLUMN "XXL_JOB_INFO"."JOB_GROUP"                    IS '执行器主键ID';
  36. COMMENT ON COLUMN "XXL_JOB_INFO"."AUTHOR"                       IS '作者';
  37. COMMENT ON COLUMN "XXL_JOB_INFO"."ALARM_EMAIL"                  IS '报警邮件';
  38. COMMENT ON COLUMN "XXL_JOB_INFO"."SCHEDULE_TYPE"                IS '调度类型';
  39. COMMENT ON COLUMN "XXL_JOB_INFO"."SCHEDULE_CONF"                IS '调度配置,值含义取决于调度类型';
  40. COMMENT ON COLUMN "XXL_JOB_INFO"."MISFIRE_STRATEGY"             IS '调度过期策略';
  41. COMMENT ON COLUMN "XXL_JOB_INFO"."EXECUTOR_ROUTE_STRATEGY"      IS '执行器路由策略';
  42. COMMENT ON COLUMN "XXL_JOB_INFO"."EXECUTOR_HANDLER"             IS '执行器任务handler';
  43. COMMENT ON COLUMN "XXL_JOB_INFO"."EXECUTOR_PARAM"               IS '执行器任务参数';
  44. COMMENT ON COLUMN "XXL_JOB_INFO"."EXECUTOR_BLOCK_STRATEGY"      IS '阻塞处理策略';
  45. COMMENT ON COLUMN "XXL_JOB_INFO"."EXECUTOR_TIMEOUT"             IS '任务执行超时时间,单位秒';
  46. COMMENT ON COLUMN "XXL_JOB_INFO"."EXECUTOR_FAIL_RETRY_COUNT"    IS '失败重试次数';
  47. COMMENT ON COLUMN "XXL_JOB_INFO"."GLUE_TYPE"                    IS 'GLUE类型';
  48. COMMENT ON COLUMN "XXL_JOB_INFO"."GLUE_SOURCE"                  IS 'GLUE源代码';
  49. COMMENT ON COLUMN "XXL_JOB_INFO"."GLUE_REMARK"                  IS 'GLUE备注';
  50. COMMENT ON COLUMN "XXL_JOB_INFO"."GLUE_UPDATETIME"              IS 'GLUE更新时间';
  51. COMMENT ON COLUMN "XXL_JOB_INFO"."CHILD_JOBID"                  IS '子任务ID,多个逗号分隔';
  52. COMMENT ON COLUMN "XXL_JOB_INFO"."TRIGGER_STATUS"               IS '调度状态:0-停止,1-运行';
  53. COMMENT ON COLUMN "XXL_JOB_INFO"."TRIGGER_LAST_TIME"            IS '上次调度时间';
  54. COMMENT ON COLUMN "XXL_JOB_INFO"."TRIGGER_NEXT_TIME"            IS '下次调度时间';
  55. -- ----------------------------
  56. -- Table structure for XXL_JOB_LOG
  57. -- ----------------------------
  58. CREATE SEQUENCE XXL_JOB_LOG_SEQ_ID
  59.     INCREMENT BY 1                --每次+1
  60.     START WITH 10                --从1开始
  61.     nomaxvalue                        --不限最大值
  62.     nominvalue                        --不限最小值
  63.     cache 20;                        --设置取值缓存数为20
  64. DROP TABLE IF EXISTS XXL_JOB_LOG;
  65. CREATE TABLE "XXL_JOB_LOG" (
  66.     "ID"                          NUMBER(38,0)          DEFAULT XXL_JOB_LOG_SEQ_ID.NEXTVAL,
  67.     "JOB_GROUP"                   NUMBER(10,0)          NOT NULL,
  68.     "JOB_ID"                      NUMBER(10,0)          NOT NULL,
  69.     "EXECUTOR_ADDRESS"            VARCHAR2(255 CHAR)    DEFAULT NULL,
  70.     "EXECUTOR_HANDLER"            VARCHAR2(255 CHAR)    DEFAULT NULL,
  71.     "EXECUTOR_PARAM"              VARCHAR2(512 CHAR)    DEFAULT NULL,
  72.     "EXECUTOR_SHARDING_PARAM"     VARCHAR2(20 CHAR)     DEFAULT NULL,
  73.     "EXECUTOR_FAIL_RETRY_COUNT"   NUMBER(10,0)          DEFAULT 0,
  74.     "TRIGGER_TIME"                TIMESTAMP          DEFAULT NULL,
  75.     "TRIGGER_CODE"                NUMBER(10,0)          NOT NULL,
  76.     "TRIGGER_MSG"                 CLOB,
  77.     "HANDLE_TIME"                 TIMESTAMP          DEFAULT NULL,
  78.     "HANDLE_CODE"                 NUMBER(10,0)          NOT NULL,
  79.     "HANDLE_MSG"                  CLOB,
  80.     "ALARM_STATUS"                NUMBER(10,0)          DEFAULT 0,
  81.     PRIMARY KEY (ID)
  82. ) ;
  83. CREATE INDEX "I_TRIGGER_TIME" ON "XXL_JOB_LOG" ("TRIGGER_TIME" ASC);
  84. CREATE INDEX "I_HANDLE_CODE" ON "XXL_JOB_LOG" ("HANDLE_CODE" ASC);
  85. COMMENT ON COLUMN "XXL_JOB_LOG"."JOB_GROUP"                     IS '执行器主键ID';
  86. COMMENT ON COLUMN "XXL_JOB_LOG"."JOB_ID"                        IS '任务,主键ID';
  87. COMMENT ON COLUMN "XXL_JOB_LOG"."EXECUTOR_ADDRESS"              IS '执行器地址,本次执行的地址';
  88. COMMENT ON COLUMN "XXL_JOB_LOG"."EXECUTOR_HANDLER"              IS '执行器任务handler';
  89. COMMENT ON COLUMN "XXL_JOB_LOG"."EXECUTOR_PARAM"                IS '执行器任务参数';
  90. COMMENT ON COLUMN "XXL_JOB_LOG"."EXECUTOR_SHARDING_PARAM"       IS '执行器任务分片参数,格式如 1/2';
  91. COMMENT ON COLUMN "XXL_JOB_LOG"."EXECUTOR_FAIL_RETRY_COUNT"     IS '失败重试次数';
  92. COMMENT ON COLUMN "XXL_JOB_LOG"."TRIGGER_TIME"                  IS '调度-时间';
  93. COMMENT ON COLUMN "XXL_JOB_LOG"."TRIGGER_CODE"                  IS '调度-结果';
  94. COMMENT ON COLUMN "XXL_JOB_LOG"."TRIGGER_MSG"                   IS '调度-日志';
  95. COMMENT ON COLUMN "XXL_JOB_LOG"."HANDLE_TIME"                   IS '执行-时间';
  96. COMMENT ON COLUMN "XXL_JOB_LOG"."HANDLE_CODE"                   IS '执行-状态';
  97. COMMENT ON COLUMN "XXL_JOB_LOG"."HANDLE_MSG"                    IS '执行-日志';
  98. COMMENT ON COLUMN "XXL_JOB_LOG"."ALARM_STATUS"                  IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';
  99. -- ----------------------------
  100. -- Table structure for XXL_JOB_LOG_REPORT
  101. -- ----------------------------
  102. CREATE SEQUENCE XXL_JOB_LOG_REPORT_SEQ_ID
  103.     INCREMENT BY 1                --每次+1
  104.     START WITH 10                --从1开始
  105.     nomaxvalue                        --不限最大值
  106.     nominvalue                        --不限最小值
  107.     cache 20;                        --设置取值缓存数为20
  108. DROP TABLE IF EXISTS XXL_JOB_LOG_REPORT;
  109. CREATE TABLE "XXL_JOB_LOG_REPORT" (
  110.     "ID"                          NUMBER(10,0)          DEFAULT XXL_JOB_LOG_REPORT_SEQ_ID.NEXTVAL,
  111.     "TRIGGER_DAY"                 TIMESTAMP                  DEFAULT NULL,
  112.     "RUNNING_COUNT"               NUMBER(10,0)          DEFAULT  0,
  113.     "SUC_COUNT"                   NUMBER(10,0)          DEFAULT  0,
  114.     "FAIL_COUNT"                  NUMBER(10,0)          DEFAULT  0,
  115.     "UPDATE_TIME"                 TIMESTAMP                  DEFAULT NULL,
  116.     PRIMARY KEY (ID)
  117. );
  118. CREATE UNIQUE INDEX "I_TRIGGER_DAY" ON "XXL_JOB_LOG_REPORT" ("TRIGGER_DAY" ASC);
  119. COMMENT ON COLUMN "XXL_JOB_LOG_REPORT"."TRIGGER_DAY"            IS '调度-时间';
  120. COMMENT ON COLUMN "XXL_JOB_LOG_REPORT"."RUNNING_COUNT"          IS '运行中-日志数量';
  121. COMMENT ON COLUMN "XXL_JOB_LOG_REPORT"."SUC_COUNT"              IS '执行成功-日志数量';
  122. COMMENT ON COLUMN "XXL_JOB_LOG_REPORT"."FAIL_COUNT"             IS '执行失败-日志数量';
  123. -- ----------------------------
  124. -- Table structure for XXL_JOB_LOGGLUE
  125. -- ----------------------------
  126. CREATE SEQUENCE XXL_JOB_LOGGLUE_SEQ_ID
  127.     INCREMENT BY 1                --每次+1
  128.     START WITH 10                --从1开始
  129.     nomaxvalue                        --不限最大值
  130.     nominvalue                        --不限最小值
  131.     cache 20;                        --设置取值缓存数为20
  132. DROP TABLE IF EXISTS XXL_JOB_LOGGLUE;
  133. CREATE TABLE "XXL_JOB_LOGGLUE" (
  134.     "ID"                          NUMBER(10,0)          DEFAULT XXL_JOB_LOGGLUE_SEQ_ID.NEXTVAL,
  135.     "JOB_ID"                      NUMBER(10,0)          NOT NULL,
  136.     "GLUE_TYPE"                   VARCHAR2(50 CHAR)     DEFAULT NULL,
  137.     "GLUE_SOURCE"                 CLOB,
  138.     "GLUE_REMARK"                 VARCHAR2(128 CHAR)    NOT NULL,
  139.     "ADD_TIME"                    TIMESTAMP          DEFAULT NULL,
  140.     "UPDATE_TIME"                 TIMESTAMP          DEFAULT NULL,
  141.     PRIMARY KEY (ID)
  142. ) ;
  143. COMMENT ON COLUMN "XXL_JOB_LOGGLUE"."JOB_ID"                    IS '任务,主键ID';
  144. COMMENT ON COLUMN "XXL_JOB_LOGGLUE"."GLUE_TYPE"                 IS 'GLUE类型';
  145. COMMENT ON COLUMN "XXL_JOB_LOGGLUE"."GLUE_SOURCE"               IS 'GLUE源代码';
  146. COMMENT ON COLUMN "XXL_JOB_LOGGLUE"."GLUE_REMARK"               IS 'GLUE备注';
  147. -- ----------------------------
  148. -- Table structure for XXL_JOB_REGISTRY
  149. -- ----------------------------
  150. CREATE SEQUENCE XXL_JOB_REGISTRY_SEQ_ID
  151.     INCREMENT BY 1                --每次+1
  152.     START WITH 10                --从1开始
  153.     nomaxvalue                        --不限最大值
  154.     nominvalue                        --不限最小值
  155.     cache 20;                        --设置取值缓存数为20
  156. DROP TABLE IF EXISTS XXL_JOB_REGISTRY;
  157. CREATE TABLE "XXL_JOB_REGISTRY" (
  158.     "ID"                          NUMBER(10,0)          DEFAULT XXL_JOB_REGISTRY_SEQ_ID.NEXTVAL,
  159.     "REGISTRY_GROUP"              VARCHAR2(50 CHAR)     NOT NULL,
  160.     "REGISTRY_KEY"                VARCHAR2(255 CHAR)    NOT NULL,
  161.     "REGISTRY_VALUE"              VARCHAR2(255 CHAR)    NOT NULL,
  162.     "UPDATE_TIME"                 TIMESTAMP          DEFAULT NULL,
  163.     PRIMARY KEY (ID)
  164. ) ;
  165. CREATE INDEX "I_G_K_V" ON "XXL_JOB_REGISTRY" ("REGISTRY_GROUP","REGISTRY_KEY","REGISTRY_VALUE" ASC);
  166. -- ----------------------------
  167. -- Table structure for XXL_JOB_GROUP
  168. -- ----------------------------
  169. CREATE SEQUENCE XXL_JOB_GROUP_SEQ_ID
  170.     INCREMENT BY 1                --每次+1
  171.     START WITH 10                --从1开始
  172.     nomaxvalue                        --不限最大值
  173.     nominvalue                        --不限最小值
  174.     cache 20;                        --设置取值缓存数为20
  175. DROP TABLE IF EXISTS XXL_JOB_GROUP;
  176. CREATE TABLE "XXL_JOB_GROUP" (
  177.     "ID"                          NUMBER(10,0)          DEFAULT XXL_JOB_GROUP_SEQ_ID.NEXTVAL,
  178.     "APP_NAME"                    VARCHAR2(64 CHAR)     NOT NULL,
  179.     "TITLE"                       VARCHAR2(64 CHAR)     NOT NULL,
  180.     "ADDRESS_TYPE"                NUMBER(10,0)          DEFAULT 0,
  181.     "ADDRESS_LIST"                VARCHAR2(512 CHAR),
  182.     "UPDATE_TIME"                 TIMESTAMP          DEFAULT NULL,
  183.     PRIMARY KEY (ID)
  184. ) ;
  185. COMMENT ON COLUMN "XXL_JOB_GROUP"."APP_NAME"                    IS '执行器AppName';
  186. COMMENT ON COLUMN "XXL_JOB_GROUP"."TITLE"                       IS '执行器名称';
  187. COMMENT ON COLUMN "XXL_JOB_GROUP"."ADDRESS_TYPE"                IS '执行器地址类型:0=自动注册、1=手动录入';
  188. COMMENT ON COLUMN "XXL_JOB_GROUP"."ADDRESS_LIST"                IS '执行器地址列表,多地址逗号分隔';
  189. -- ----------------------------
  190. -- Table structure for XXL_JOB_USER
  191. -- ----------------------------
  192. CREATE SEQUENCE XXL_JOB_USER_SEQ_ID
  193.     INCREMENT BY 1                --每次+1
  194.     START WITH 10                --从1开始
  195.     nomaxvalue                        --不限最大值
  196.     nominvalue                        --不限最小值
  197.     cache 20;                        --设置取值缓存数为20
  198. DROP TABLE IF EXISTS XXL_JOB_USER;
  199. CREATE TABLE "XXL_JOB_USER" (
  200.     "ID"                          NUMBER(10,0)          DEFAULT XXL_JOB_USER_SEQ_ID.NEXTVAL,
  201.     "USERNAME"                    VARCHAR2(50 CHAR)     NOT NULL ,
  202.     "PASSWORD"                    VARCHAR2(50 CHAR)     NOT NULL ,
  203.     "ROLE"                        NUMBER(10,0)          NOT NULL ,
  204.     "PERMISSION"                  VARCHAR2(255 CHAR)    DEFAULT NULL,
  205.     PRIMARY KEY (ID)
  206. ) ;
  207. CREATE UNIQUE INDEX "I_USERNAME" ON "XXL_JOB_USER" ("USERNAME" ASC);
  208. COMMENT ON COLUMN "XXL_JOB_USER"."USERNAME"                     IS '账号';
  209. COMMENT ON COLUMN "XXL_JOB_USER"."PASSWORD"                     IS '密码';
  210. COMMENT ON COLUMN "XXL_JOB_USER"."ROLE"                         IS '角色:0-普通用户、1-管理员';
  211. COMMENT ON COLUMN "XXL_JOB_USER"."PERMISSION"                   IS '权限:执行器ID列表,多个逗号分割';
  212. -- ----------------------------
  213. -- Table structure for XXL_JOB_LOCK
  214. -- ----------------------------
  215. DROP TABLE IF EXISTS XXL_JOB_LOCK;
  216. CREATE TABLE "XXL_JOB_LOCK" (
  217.     "LOCK_NAME"                   VARCHAR2(50 CHAR)     NOT NULL,
  218.     PRIMARY KEY ("LOCK_NAME")
  219. ) ;
  220. -- 2023-12-27 增加对xxl-job支持
  221. INSERT INTO "XXL_JOB_GROUP"("ID", "APP_NAME", "TITLE", "ADDRESS_TYPE", "ADDRESS_LIST", "UPDATE_TIME") VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'));
  222. INSERT INTO "XXL_JOB_INFO"("ID", "JOB_GROUP", "JOB_DESC", "ADD_TIME", "UPDATE_TIME", "AUTHOR", "ALARM_EMAIL", "SCHEDULE_TYPE", "SCHEDULE_CONF", "MISFIRE_STRATEGY", "EXECUTOR_ROUTE_STRATEGY", "EXECUTOR_HANDLER", "EXECUTOR_PARAM", "EXECUTOR_BLOCK_STRATEGY", "EXECUTOR_TIMEOUT", "EXECUTOR_FAIL_RETRY_COUNT", "GLUE_TYPE", "GLUE_SOURCE", "GLUE_REMARK", "GLUE_UPDATETIME", "CHILD_JOBID") VALUES (1, 1, '测试任务1', TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'), TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'), 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', TO_DATE('2018-11-03 22:21:31','yyyy-mm-dd hh24:mi:ss'), '');
  223. INSERT INTO "XXL_JOB_USER"("ID", "USERNAME", "PASSWORD", "ROLE", "PERMISSION") VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
  224. INSERT INTO "XXL_JOB_LOCK"("LOCK_NAME") VALUES ('schedule_lock');
复制代码
3.1.3 高斯 gaussdb

  1. CREATE SEQUENCE xxl_job_group_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  2. SELECT
  3.         setval ( 'xxl_job_group_id_seq', 2, TRUE );
  4. CREATE SEQUENCE xxl_job_info_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  5. CREATE SEQUENCE xxl_job_log_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  6. CREATE SEQUENCE xxl_job_logglue_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  7. CREATE SEQUENCE xxl_job_log_report_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  8. CREATE SEQUENCE xxl_job_registry_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  9. CREATE SEQUENCE xxl_job_user_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  10. SELECT
  11.         setval ( 'xxl_job_user_id_seq', 2, TRUE );
  12. SELECT
  13.         setval ( 'xxl_job_info_id_seq', 2, TRUE );
  14. DROP TABLE IF EXISTS XXL_JOB_INFO CASCADE;
  15. CREATE TABLE XXL_JOB_INFO (
  16.     ID                              INT              NOT NULL DEFAULT nextval ( 'xxl_job_info_id_seq' :: regclass ),
  17.     JOB_GROUP                       INT                 NOT NULL,
  18.     JOB_DESC                        VARCHAR(255)        NOT NULL,
  19.     ADD_TIME                        TIMESTAMP                DEFAULT NULL,
  20.     UPDATE_TIME                     TIMESTAMP                DEFAULT NULL,
  21.     AUTHOR                          VARCHAR(64)         DEFAULT NULL,
  22.     ALARM_EMAIL                     VARCHAR(255)        DEFAULT NULL,
  23.     SCHEDULE_TYPE                   VARCHAR(50)         NOT NULL DEFAULT 'NONE',
  24.     SCHEDULE_CONF                   VARCHAR(128)        DEFAULT NULL,
  25.     MISFIRE_STRATEGY                VARCHAR(50)         NOT NULL DEFAULT 'DO_NOTHING' ,
  26.     EXECUTOR_ROUTE_STRATEGY         VARCHAR(50)         DEFAULT NULL,
  27.     EXECUTOR_HANDLER                VARCHAR(255)        DEFAULT NULL,
  28.     EXECUTOR_PARAM                  VARCHAR(512)        DEFAULT NULL,
  29.     EXECUTOR_BLOCK_STRATEGY         VARCHAR(50)         DEFAULT NULL,
  30.     EXECUTOR_TIMEOUT                INT                 NOT NULL DEFAULT 0,
  31.     EXECUTOR_FAIL_RETRY_COUNT       INT                 NOT NULL DEFAULT 0,
  32.     GLUE_TYPE                       VARCHAR(50)         NOT NULL,
  33.     GLUE_SOURCE                     TEXT,
  34.     GLUE_REMARK                     VARCHAR(128)        DEFAULT NULL,
  35.     GLUE_UPDATETIME                 TIMESTAMP                DEFAULT NULL,
  36.     CHILD_JOBID                     VARCHAR(255)        DEFAULT NULL,
  37.     TRIGGER_STATUS                  SMALLINT            NOT NULL DEFAULT 0,
  38.     TRIGGER_LAST_TIME               BIGINT              NOT NULL DEFAULT 0,
  39.     TRIGGER_NEXT_TIME               BIGINT              NOT NULL DEFAULT 0,
  40.     PRIMARY KEY (ID)
  41. ) ;
  42. COMMENT ON COLUMN XXL_JOB_INFO.JOB_GROUP                                    IS '执行器主键ID';
  43. COMMENT ON COLUMN XXL_JOB_INFO.AUTHOR                                       IS '作者';
  44. COMMENT ON COLUMN XXL_JOB_INFO.ALARM_EMAIL                                  IS '报警邮件';
  45. COMMENT ON COLUMN XXL_JOB_INFO.SCHEDULE_TYPE                                IS '调度类型';
  46. COMMENT ON COLUMN XXL_JOB_INFO.SCHEDULE_CONF                                IS '调度配置,值含义取决于调度类型';
  47. COMMENT ON COLUMN XXL_JOB_INFO.MISFIRE_STRATEGY                             IS '调度过期策略';
  48. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_ROUTE_STRATEGY                      IS '执行器路由策略';
  49. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_HANDLER                             IS '执行器任务handler';
  50. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_PARAM                               IS '执行器任务参数';
  51. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_BLOCK_STRATEGY                      IS '阻塞处理策略';
  52. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_TIMEOUT                             IS '任务执行超时时间,单位秒';
  53. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_FAIL_RETRY_COUNT                    IS '失败重试次数';
  54. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_TYPE                                    IS 'GLUE类型';
  55. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_SOURCE                                  IS 'GLUE源代码';
  56. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_REMARK                                  IS 'GLUE备注';
  57. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_UPDATETIME                              IS 'GLUE更新时间';
  58. COMMENT ON COLUMN XXL_JOB_INFO.CHILD_JOBID                                  IS '子任务ID,多个逗号分隔';
  59. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_STATUS                               IS '调度状态:0-停止,1-运行';
  60. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_LAST_TIME                            IS '上次调度时间';
  61. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_NEXT_TIME                            IS '下次调度时间';
  62. -- ----------------------------
  63. -- Table structure for XXL_JOB_LOG
  64. -- ----------------------------
  65. DROP TABLE IF EXISTS XXL_JOB_LOG CASCADE;
  66. CREATE TABLE XXL_JOB_LOG (
  67.     ID                          INT               NOT NULL DEFAULT nextval ( 'xxl_job_log_id_seq' :: regclass ),
  68.     JOB_GROUP                   INT                     NOT NULL,
  69.     JOB_ID                      INT                     NOT NULL,
  70.     EXECUTOR_ADDRESS            VARCHAR(255)            DEFAULT NULL,
  71.     EXECUTOR_HANDLER            VARCHAR(255)            DEFAULT NULL,
  72.     EXECUTOR_PARAM              VARCHAR(512)            DEFAULT NULL,
  73.     EXECUTOR_SHARDING_PARAM     VARCHAR(20)             DEFAULT NULL,
  74.     EXECUTOR_FAIL_RETRY_COUNT   INT                     NOT NULL DEFAULT 0 ,
  75.     TRIGGER_TIME                TIMESTAMP                DEFAULT NULL,
  76.     TRIGGER_CODE                INT                     NOT NULL,
  77.     TRIGGER_MSG                 TEXT,
  78.     HANDLE_TIME                 TIMESTAMP                DEFAULT NULL,
  79.     HANDLE_CODE                 INT                     NOT NULL,
  80.     HANDLE_MSG                  TEXT,
  81.     ALARM_STATUS                SMALLINT                NOT NULL DEFAULT 0 ,
  82.     PRIMARY KEY (ID)
  83. ) ;
  84. CREATE INDEX LOG_I_HANDLE_CODE ON XXL_JOB_LOG USING btree (HANDLE_CODE) ;
  85. CREATE INDEX LOG_I_TRIGGER_TIME ON XXL_JOB_LOG USING btree (TRIGGER_TIME) ;
  86. COMMENT ON COLUMN XXL_JOB_LOG.JOB_GROUP                                     IS '执行器主键ID';
  87. COMMENT ON COLUMN XXL_JOB_LOG.JOB_ID                                        IS '任务,主键ID';
  88. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_ADDRESS                              IS '执行器地址,本次执行的地址';
  89. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_HANDLER                              IS '执行器任务handler';
  90. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_PARAM                                IS '执行器任务参数';
  91. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_SHARDING_PARAM                       IS '执行器任务分片参数,格式如 1/2';
  92. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_FAIL_RETRY_COUNT                     IS '失败重试次数';
  93. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_TIME                                  IS '调度-时间';
  94. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_CODE                                  IS '调度-结果';
  95. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_MSG                                   IS '调度-日志';
  96. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_TIME                                   IS '执行-时间';
  97. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_CODE                                   IS '执行-状态';
  98. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_MSG                                    IS '执行-日志';
  99. COMMENT ON COLUMN XXL_JOB_LOG.ALARM_STATUS                                  IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';
  100. -- ----------------------------
  101. -- Table structure for XXL_JOB_LOG_REPORT
  102. -- ----------------------------
  103. DROP TABLE IF EXISTS XXL_JOB_LOG_REPORT CASCADE;
  104. CREATE TABLE XXL_JOB_LOG_REPORT (
  105.     ID                          INT                  NOT NULL DEFAULT nextval ( 'xxl_job_log_report_id_seq' :: regclass ),
  106.     TRIGGER_DAY                 TIMESTAMP                    DEFAULT NULL ,
  107.     RUNNING_COUNT               INT                     NOT NULL DEFAULT 0 ,
  108.     SUC_COUNT                   INT                     NOT NULL DEFAULT 0 ,
  109.     FAIL_COUNT                  INT                     NOT NULL DEFAULT 0 ,
  110.     UPDATE_TIME                 TIMESTAMP                    DEFAULT NULL,
  111.     PRIMARY KEY (ID)
  112. );
  113. CREATE INDEX I_TRIGGER_DAY ON XXL_JOB_LOG_REPORT USING btree (TRIGGER_DAY) ;
  114. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.TRIGGER_DAY                            IS '调度-时间';
  115. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.RUNNING_COUNT                          IS '运行中-日志数量';
  116. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.SUC_COUNT                              IS '执行成功-日志数量';
  117. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.FAIL_COUNT                             IS '执行失败-日志数量';
  118. -- ----------------------------
  119. -- Table structure for XXL_JOB_LOGGLUE
  120. -- ----------------------------
  121. DROP TABLE IF EXISTS XXL_JOB_LOGGLUE CASCADE;
  122. CREATE TABLE XXL_JOB_LOGGLUE (
  123.     ID                          INT                  NOT NULL DEFAULT nextval ( 'xxl_job_logglue_id_seq' :: regclass ),
  124.     JOB_ID                      INT                     NOT NULL ,
  125.     GLUE_TYPE                   VARCHAR(50)             DEFAULT NULL ,
  126.     GLUE_SOURCE                 TEXT ,
  127.     GLUE_REMARK                 VARCHAR(128)            NOT NULL ,
  128.     ADD_TIME                    TIMESTAMP                    DEFAULT NULL,
  129.     UPDATE_TIME                 TIMESTAMP                    DEFAULT NULL,
  130.     PRIMARY KEY (ID)
  131. ) ;
  132. COMMENT ON COLUMN XXL_JOB_LOGGLUE.JOB_ID                                    IS '任务,主键ID';
  133. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_TYPE                                 IS 'GLUE类型';
  134. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_SOURCE                               IS 'GLUE源代码';
  135. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_REMARK                               IS 'GLUE备注';
  136. -- ----------------------------
  137. -- Table structure for XXL_JOB_REGISTRY
  138. -- ----------------------------
  139. DROP TABLE IF EXISTS XXL_JOB_REGISTRY CASCADE;
  140. CREATE TABLE XXL_JOB_REGISTRY (
  141.     ID                          INT                  NOT NULL DEFAULT nextval ( 'xxl_job_registry_id_seq' :: regclass ),
  142.     REGISTRY_GROUP              VARCHAR(50)             NOT NULL,
  143.     REGISTRY_KEY                VARCHAR(255)            NOT NULL,
  144.     REGISTRY_VALUE              VARCHAR(255)            NOT NULL,
  145.     UPDATE_TIME                 TIMESTAMP               DEFAULT NULL,
  146.     PRIMARY KEY (ID)
  147. ) ;
  148. CREATE INDEX I_G_K_V ON XXL_JOB_REGISTRY USING btree(REGISTRY_GROUP, REGISTRY_KEY, REGISTRY_VALUE);
  149. -- ----------------------------
  150. -- Table structure for XXL_JOB_GROUP
  151. -- ----------------------------
  152. DROP TABLE IF EXISTS XXL_JOB_GROUP CASCADE;
  153. CREATE TABLE XXL_JOB_GROUP (
  154.     ID                          INT                  NOT NULL DEFAULT nextval ( 'xxl_job_group_id_seq' :: regclass ),
  155.     APP_NAME                    VARCHAR(64)             NOT NULL ,
  156.     TITLE                       VARCHAR(64)             NOT NULL ,
  157.     ADDRESS_TYPE                SMALLINT                NOT NULL DEFAULT 0 ,
  158.     ADDRESS_LIST                TEXT ,
  159.     UPDATE_TIME                 TIMESTAMP               DEFAULT NULL,
  160.     PRIMARY KEY (ID)
  161. ) ;
  162. COMMENT ON COLUMN XXL_JOB_GROUP.APP_NAME                                    IS '执行器AppName';
  163. COMMENT ON COLUMN XXL_JOB_GROUP.TITLE                                       IS '执行器名称';
  164. COMMENT ON COLUMN XXL_JOB_GROUP.ADDRESS_TYPE                                IS '执行器地址类型:0=自动注册、1=手动录入';
  165. COMMENT ON COLUMN XXL_JOB_GROUP.ADDRESS_LIST                                IS '执行器地址列表,多地址逗号分隔';
  166. -- ----------------------------
  167. -- Table structure for XXL_JOB_USER
  168. -- ----------------------------
  169. DROP TABLE IF EXISTS XXL_JOB_USER CASCADE;
  170. CREATE TABLE XXL_JOB_USER (
  171.     ID                          INT                  NOT NULL  DEFAULT nextval ( 'xxl_job_user_id_seq' :: regclass )  ,
  172.     USERNAME                    VARCHAR(50)             NOT NULL    ,
  173.     PASSWORD                    VARCHAR(50)             NOT NULL    ,
  174.     ROLE                        SMALLINT                NOT NULL    ,
  175.     PERMISSION                  VARCHAR(255)            DEFAULT NULL,
  176.     PRIMARY KEY (ID)
  177. ) ;
  178. CREATE UNIQUE INDEX I_USERNAME ON XXL_JOB_USER USING btree(USERNAME);
  179. COMMENT ON COLUMN XXL_JOB_USER.USERNAME                                     IS '账号';
  180. COMMENT ON COLUMN XXL_JOB_USER.PASSWORD                                     IS '密码';
  181. COMMENT ON COLUMN XXL_JOB_USER.ROLE                                         IS '角色:0-普通用户、1-管理员';
  182. COMMENT ON COLUMN XXL_JOB_USER.PERMISSION                                   IS '权限:执行器ID列表,多个逗号分割';
  183. -- ----------------------------
  184. -- Table structure for XXL_JOB_LOCK
  185. -- ----------------------------
  186. DROP TABLE IF EXISTS XXL_JOB_LOCK CASCADE;
  187. CREATE TABLE XXL_JOB_LOCK (
  188.     LOCK_NAME                   VARCHAR(50)             NOT NULL ,
  189.     PRIMARY KEY (LOCK_NAME)
  190. ) ;
  191. COMMENT ON COLUMN XXL_JOB_LOCK.LOCK_NAME                                    IS '锁名称';
  192. -- 2023-12-27 适配xxl-job
  193. INSERT INTO XXL_JOB_GROUP(ID, APP_NAME, TITLE, ADDRESS_TYPE, ADDRESS_LIST, UPDATE_TIME) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' );
  194. INSERT INTO XXL_JOB_INFO(ID, JOB_GROUP, JOB_DESC, ADD_TIME, UPDATE_TIME, AUTHOR, ALARM_EMAIL, SCHEDULE_TYPE, SCHEDULE_CONF, MISFIRE_STRATEGY, EXECUTOR_ROUTE_STRATEGY, EXECUTOR_HANDLER, EXECUTOR_PARAM, EXECUTOR_BLOCK_STRATEGY, EXECUTOR_TIMEOUT, EXECUTOR_FAIL_RETRY_COUNT, GLUE_TYPE, GLUE_SOURCE, GLUE_REMARK, GLUE_UPDATETIME, CHILD_JOBID) VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
  195. INSERT INTO XXL_JOB_USER(ID, USERNAME, PASSWORD, ROLE, PERMISSION) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
  196. INSERT INTO XXL_JOB_LOCK(LOCK_NAME) VALUES ( 'schedule_lock');
复制代码
3.1.4 人大金仓 kingbase

  1. DROP TABLE IF EXISTS XXL_JOB_GROUP;
  2. CREATE TABLE XXL_JOB_GROUP (
  3.     ID                              SERIAL                      NOT NULL ,
  4.     APP_NAME                        VARCHAR(64)                 NOT NULL ,
  5.     TITLE                           VARCHAR(64)                 NOT NULL ,
  6.     ADDRESS_TYPE                    SMALLINT                    NOT NULL DEFAULT 0 ,
  7.     ADDRESS_LIST                    TEXT ,
  8.     UPDATE_TIME                     TIMESTAMP                   DEFAULT NULL ,
  9.     PRIMARY KEY (ID)
  10. ) ;
  11. COMMENT ON COLUMN XXL_JOB_GROUP.APP_NAME                                        IS '执行器AppName';
  12. COMMENT ON COLUMN XXL_JOB_GROUP.TITLE                                           IS '执行器名称';
  13. COMMENT ON COLUMN XXL_JOB_GROUP.ADDRESS_TYPE                                    IS '执行器地址类型:0=自动注册、1=手动录入';
  14. COMMENT ON COLUMN XXL_JOB_GROUP.ADDRESS_LIST                                    IS '执行器地址列表,多地址逗号分隔';
  15. CREATE SEQUENCE "XXL_JOB_GROUP_ID_SEQ"
  16.     START WITH 1
  17.     INCREMENT BY 1
  18.     NO MINVALUE
  19.     NO MAXVALUE
  20.     CACHE 1;
  21. ALTER SEQUENCE "XXL_JOB_GROUP_ID_SEQ" OWNED BY "XXL_JOB_GROUP"."ID";
  22. DROP TABLE IF EXISTS XXL_JOB_INFO;
  23. CREATE TABLE XXL_JOB_INFO (
  24.     ID                              SERIAL                      NOT NULL ,
  25.     JOB_GROUP                       INT                         NOT NULL ,
  26.     JOB_DESC                        VARCHAR(255)                NOT NULL ,
  27.     ADD_TIME                        TIMESTAMP                        DEFAULT NULL ,
  28.     UPDATE_TIME                     TIMESTAMP                        DEFAULT NULL ,
  29.     AUTHOR                          VARCHAR(64)                 DEFAULT NULL ,
  30.     ALARM_EMAIL                     VARCHAR(255)                DEFAULT NULL ,
  31.     SCHEDULE_TYPE                   VARCHAR(50)                 NOT NULL DEFAULT 'NONE' ,
  32.     SCHEDULE_CONF                   VARCHAR(128)                DEFAULT NULL ,
  33.     MISFIRE_STRATEGY                VARCHAR(50)                 NOT NULL DEFAULT 'DO_NOTHING' ,
  34.     EXECUTOR_ROUTE_STRATEGY         VARCHAR(50)                 DEFAULT NULL ,
  35.     EXECUTOR_HANDLER                VARCHAR(255)                DEFAULT NULL ,
  36.     EXECUTOR_PARAM                  VARCHAR(512)                DEFAULT NULL ,
  37.     EXECUTOR_BLOCK_STRATEGY         VARCHAR(50)                 DEFAULT NULL ,
  38.     EXECUTOR_TIMEOUT                INT                         NOT NULL DEFAULT 0 ,
  39.     EXECUTOR_FAIL_RETRY_COUNT       INT                         NOT NULL DEFAULT 0 ,
  40.     GLUE_TYPE                       VARCHAR(50)                 NOT NULL ,
  41.     GLUE_SOURCE                     TEXT ,
  42.     GLUE_REMARK                     VARCHAR(128)                DEFAULT NULL ,
  43.     GLUE_UPDATETIME                 DATE                        DEFAULT NULL ,
  44.     CHILD_JOBID                     VARCHAR(255)                DEFAULT NULL ,
  45.     TRIGGER_STATUS                  SMALLINT                    NOT NULL DEFAULT 0 ,
  46.     TRIGGER_LAST_TIME               BIGINT                      NOT NULL DEFAULT 0 ,
  47.     TRIGGER_NEXT_TIME               BIGINT                      NOT NULL DEFAULT 0 ,
  48.     PRIMARY KEY (ID)
  49. ) ;
  50. COMMENT ON COLUMN XXL_JOB_INFO.JOB_GROUP                                        IS '执行器主键ID';
  51. COMMENT ON COLUMN XXL_JOB_INFO.AUTHOR                                           IS '作者';
  52. COMMENT ON COLUMN XXL_JOB_INFO.ALARM_EMAIL                                      IS '报警邮件';
  53. COMMENT ON COLUMN XXL_JOB_INFO.SCHEDULE_TYPE                                    IS '调度类型';
  54. COMMENT ON COLUMN XXL_JOB_INFO.SCHEDULE_CONF                                    IS '调度配置,值含义取决于调度类型';
  55. COMMENT ON COLUMN XXL_JOB_INFO.MISFIRE_STRATEGY                                 IS '调度过期策略';
  56. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_ROUTE_STRATEGY                          IS '执行器路由策略';
  57. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_HANDLER                                 IS '执行器任务handler';
  58. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_PARAM                                   IS '执行器任务参数';
  59. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_BLOCK_STRATEGY                          IS '阻塞处理策略';
  60. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_TIMEOUT                                 IS '任务执行超时时间,单位秒';
  61. COMMENT ON COLUMN XXL_JOB_INFO.EXECUTOR_FAIL_RETRY_COUNT                        IS '失败重试次数';
  62. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_TYPE                                        IS 'GLUE类型';
  63. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_SOURCE                                      IS 'GLUE源代码';
  64. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_REMARK                                      IS 'GLUE备注';
  65. COMMENT ON COLUMN XXL_JOB_INFO.GLUE_UPDATETIME                                  IS 'GLUE更新时间';
  66. COMMENT ON COLUMN XXL_JOB_INFO.CHILD_JOBID                                      IS '子任务ID,多个逗号分隔';
  67. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_STATUS                                   IS '调度状态:0-停止,1-运行';
  68. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_LAST_TIME                                IS '上次调度时间';
  69. COMMENT ON COLUMN XXL_JOB_INFO.TRIGGER_NEXT_TIME                                IS '下次调度时间';
  70. CREATE SEQUENCE "XXL_JOB_INFO_ID_SEQ"
  71.     START WITH 1
  72.     INCREMENT BY 1
  73.     NO MINVALUE
  74.     NO MAXVALUE
  75.     CACHE 1;
  76. ALTER SEQUENCE "XXL_JOB_INFO_ID_SEQ" OWNED BY "XXL_JOB_INFO"."ID";
  77. DROP TABLE IF EXISTS XXL_JOB_LOCK;
  78. CREATE TABLE XXL_JOB_LOCK (
  79.     LOCK_NAME                       VARCHAR(50)                 NOT NULL ,
  80.     PRIMARY KEY (LOCK_NAME)
  81. ) ;
  82. COMMENT ON COLUMN XXL_JOB_LOCK.LOCK_NAME                                        IS '锁名称';
  83. DROP TABLE IF EXISTS XXL_JOB_LOG;
  84. CREATE TABLE XXL_JOB_LOG (
  85.     ID                              BIGSERIAL                   NOT NULL ,
  86.     JOB_GROUP                       INT                         NOT NULL ,
  87.     JOB_ID                          INT                         NOT NULL ,
  88.     EXECUTOR_ADDRESS                VARCHAR(255)                DEFAULT NULL ,
  89.     EXECUTOR_HANDLER                VARCHAR(255)                DEFAULT NULL ,
  90.     EXECUTOR_PARAM                  VARCHAR(512)                DEFAULT NULL ,
  91.     EXECUTOR_SHARDING_PARAM         VARCHAR(20)                 DEFAULT NULL ,
  92.     EXECUTOR_FAIL_RETRY_COUNT       INT                         NOT NULL DEFAULT 0 ,
  93.     TRIGGER_TIME                    TIMESTAMP                        DEFAULT NULL ,
  94.     TRIGGER_CODE                    INT                         NOT NULL ,
  95.     TRIGGER_MSG                     TEXT ,
  96.     HANDLE_TIME                     TIMESTAMP                        DEFAULT NULL ,
  97.     HANDLE_CODE                     INT                         NOT NULL ,
  98.     HANDLE_MSG                      TEXT ,
  99.     ALARM_STATUS                    SMALLINT                    NOT NULL DEFAULT 0 ,
  100.     PRIMARY KEY (ID)
  101. ) ;
  102. CREATE INDEX I_TRIGGER_TIME ON XXL_JOB_LOG USING btree (TRIGGER_TIME) ;
  103. CREATE INDEX I_HANDLE_CODE ON XXL_JOB_LOG USING btree (HANDLE_CODE) ;
  104. COMMENT ON COLUMN XXL_JOB_LOG.JOB_GROUP                                         IS '执行器主键ID';
  105. COMMENT ON COLUMN XXL_JOB_LOG.JOB_ID                                            IS '任务,主键ID';
  106. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_ADDRESS                                  IS '执行器地址,本次执行的地址';
  107. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_HANDLER                                  IS '执行器任务handler';
  108. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_PARAM                                    IS '执行器任务参数';
  109. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_SHARDING_PARAM                           IS '执行器任务分片参数,格式如 1/2';
  110. COMMENT ON COLUMN XXL_JOB_LOG.EXECUTOR_FAIL_RETRY_COUNT                         IS '失败重试次数';
  111. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_TIME                                      IS '调度-时间';
  112. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_CODE                                      IS '调度-结果';
  113. COMMENT ON COLUMN XXL_JOB_LOG.TRIGGER_MSG                                       IS '调度-日志';
  114. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_TIME                                       IS '执行-时间';
  115. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_CODE                                       IS '执行-状态';
  116. COMMENT ON COLUMN XXL_JOB_LOG.HANDLE_MSG                                        IS '执行-日志';
  117. COMMENT ON COLUMN XXL_JOB_LOG.ALARM_STATUS                                      IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';
  118. DROP TABLE IF EXISTS XXL_JOB_LOGGLUE;
  119. CREATE TABLE XXL_JOB_LOGGLUE (
  120.     ID                              SERIAL                      NOT NULL ,
  121.     JOB_ID                          INT                         NOT NULL ,
  122.     GLUE_TYPE                       VARCHAR(50)                 DEFAULT NULL ,
  123.     GLUE_SOURCE                     TEXT ,
  124.     GLUE_REMARK                     VARCHAR(128)                NOT NULL ,
  125.     ADD_TIME                        TIMESTAMP                        DEFAULT NULL ,
  126.     UPDATE_TIME                     TIMESTAMP                        DEFAULT NULL ,
  127.     PRIMARY KEY (ID)
  128. ) ;
  129. COMMENT ON COLUMN XXL_JOB_LOGGLUE.JOB_ID                                        IS '任务,主键ID';
  130. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_TYPE                                     IS 'GLUE类型';
  131. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_SOURCE                                   IS 'GLUE源代码';
  132. COMMENT ON COLUMN XXL_JOB_LOGGLUE.GLUE_REMARK                                   IS 'GLUE备注';
  133. CREATE SEQUENCE "XXL_JOB_LOGGLUE_ID_SEQ"
  134.     START WITH 1
  135.     INCREMENT BY 1
  136.     NO MINVALUE
  137.     NO MAXVALUE
  138.     CACHE 1;
  139. ALTER SEQUENCE "XXL_JOB_LOGGLUE_ID_SEQ" OWNED BY "XXL_JOB_LOGGLUE"."ID";
  140. CREATE SEQUENCE "XXL_JOB_LOG_ID_SEQ"
  141.     START WITH 1
  142.     INCREMENT BY 1
  143.     NO MINVALUE
  144.     NO MAXVALUE
  145.     CACHE 1;
  146. ALTER SEQUENCE "XXL_JOB_LOG_ID_SEQ" OWNED BY "XXL_JOB_LOG"."ID";
  147. DROP TABLE IF EXISTS XXL_JOB_LOG_REPORT;
  148. CREATE TABLE XXL_JOB_LOG_REPORT (
  149.     ID                              SERIAL                      NOT NULL ,
  150.     TRIGGER_DAY                     TIMESTAMP                        DEFAULT NULL ,
  151.     RUNNING_COUNT                   INT                         NOT NULL DEFAULT 0 ,
  152.     SUC_COUNT                       INT                         NOT NULL DEFAULT 0 ,
  153.     FAIL_COUNT                      INT                         NOT NULL DEFAULT 0 ,
  154.     UPDATE_TIME                     TIMESTAMP                        DEFAULT NULL ,
  155.     PRIMARY KEY (ID)
  156. );
  157. CREATE UNIQUE INDEX I_TRIGGER_DAY ON XXL_JOB_LOG_REPORT USING btree(TRIGGER_DAY) ;
  158. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.TRIGGER_DAY                                IS '调度-时间';
  159. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.RUNNING_COUNT                              IS '运行中-日志数量';
  160. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.SUC_COUNT                                  IS '执行成功-日志数量';
  161. COMMENT ON COLUMN XXL_JOB_LOG_REPORT.FAIL_COUNT                                 IS '执行失败-日志数量';
  162. CREATE SEQUENCE "XXL_JOB_LOG_REPORT_ID_SEQ"
  163.     START WITH 1
  164.     INCREMENT BY 1
  165.     NO MINVALUE
  166.     NO MAXVALUE
  167.     CACHE 1;
  168. ALTER SEQUENCE "XXL_JOB_LOG_REPORT_ID_SEQ" OWNED BY "XXL_JOB_LOG_REPORT"."ID";
  169. DROP TABLE IF EXISTS XXL_JOB_REGISTRY;
  170. CREATE TABLE XXL_JOB_REGISTRY (
  171.     ID                              SERIAL                      NOT NULL ,
  172.     REGISTRY_GROUP                  VARCHAR(50)                 NOT NULL ,
  173.     REGISTRY_KEY                    VARCHAR(255)                NOT NULL ,
  174.     REGISTRY_VALUE                  VARCHAR(255)                NOT NULL ,
  175.     UPDATE_TIME                     TIMESTAMP                   DEFAULT NULL ,
  176.     PRIMARY KEY (ID)
  177. ) ;
  178. CREATE INDEX I_G_K_V ON XXL_JOB_REGISTRY USING btree(REGISTRY_GROUP, REGISTRY_KEY, REGISTRY_VALUE);
  179. CREATE SEQUENCE "XXL_JOB_REGISTRY_ID_SEQ"
  180.     START WITH 1
  181.     INCREMENT BY 1
  182.     NO MINVALUE
  183.     NO MAXVALUE
  184.     CACHE 1;
  185. ALTER SEQUENCE "XXL_JOB_REGISTRY_ID_SEQ" OWNED BY "XXL_JOB_REGISTRY"."ID";
  186. DROP TABLE IF EXISTS XXL_JOB_USER;
  187. CREATE TABLE XXL_JOB_USER (
  188.     ID                              SERIAL                      NOT NULL ,
  189.     USERNAME                        VARCHAR(50)                 NOT NULL ,
  190.     PASSWORD                        VARCHAR(50)                 NOT NULL ,
  191.     ROLE                            SMALLINT                    NOT NULL ,
  192.     PERMISSION                      VARCHAR(255)                DEFAULT NULL ,
  193.     PRIMARY KEY (ID)
  194. ) ;
  195. CREATE UNIQUE INDEX I_USERNAME ON XXL_JOB_USER USING btree(USERNAME);
  196. COMMENT ON COLUMN XXL_JOB_USER.USERNAME                                         IS '账号';
  197. COMMENT ON COLUMN XXL_JOB_USER.PASSWORD                                         IS '密码';
  198. COMMENT ON COLUMN XXL_JOB_USER.ROLE                                             IS '角色:0-普通用户、1-管理员';
  199. COMMENT ON COLUMN XXL_JOB_USER.PERMISSION                                       IS '权限:执行器ID列表,多个逗号分割';
  200. CREATE SEQUENCE "XXL_JOB_USER_ID_SEQ"
  201.     START WITH 1
  202.     INCREMENT BY 1
  203.     NO MINVALUE
  204.     NO MAXVALUE
  205.     CACHE 1;
  206. ALTER SEQUENCE "XXL_JOB_USER_ID_SEQ" OWNED BY "XXL_JOB_USER"."ID";
  207. ALTER TABLE ONLY "XXL_JOB_GROUP" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_GROUP_ID_SEQ'::REGCLASS);
  208. ALTER TABLE ONLY "XXL_JOB_INFO" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_INFO_ID_SEQ'::REGCLASS);
  209. ALTER TABLE ONLY "XXL_JOB_LOG" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_LOG_ID_SEQ'::REGCLASS);
  210. ALTER TABLE ONLY "XXL_JOB_LOGGLUE" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_LOGGLUE_ID_SEQ'::REGCLASS);
  211. ALTER TABLE ONLY "XXL_JOB_LOG_REPORT" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_LOG_REPORT_ID_SEQ'::REGCLASS);
  212. ALTER TABLE ONLY "XXL_JOB_REGISTRY" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_REGISTRY_ID_SEQ'::REGCLASS);
  213. ALTER TABLE ONLY "XXL_JOB_USER" ALTER COLUMN "ID" SET DEFAULT NEXTVAL('PUBLIC.XXL_JOB_USER_ID_SEQ'::REGCLASS);
  214. SELECT sys_catalog.setval('"XXL_JOB_GROUP_ID_SEQ"', 10, true);
  215. SELECT sys_catalog.setval('"XXL_JOB_INFO_ID_SEQ"', 10, true);
  216. SELECT sys_catalog.setval('"XXL_JOB_LOGGLUE_ID_SEQ"', 10, true);
  217. SELECT sys_catalog.setval('"XXL_JOB_LOG_ID_SEQ"', 10, true);
  218. SELECT sys_catalog.setval('"XXL_JOB_LOG_REPORT_ID_SEQ"', 10, true);
  219. SELECT sys_catalog.setval('"XXL_JOB_REGISTRY_ID_SEQ"', 10, true);
  220. SELECT sys_catalog.setval('"XXL_JOB_USER_ID_SEQ"', 1, false);
  221. CREATE INDEX "I_handle_code" ON PUBLIC.XXL_JOB_LOG USING BTREE (HANDLE_CODE);
  222. CREATE INDEX "I_trigger_time" ON PUBLIC.XXL_JOB_LOG USING BTREE (TRIGGER_TIME);
  223. CREATE INDEX "i_g_k_v" ON PUBLIC.XXL_JOB_REGISTRY USING BTREE (REGISTRY_GROUP, REGISTRY_KEY, REGISTRY_VALUE);
  224. -- 2023-12-27 适配xxl-job
  225. INSERT INTO XXL_JOB_GROUP(ID, APP_NAME, TITLE, ADDRESS_TYPE, ADDRESS_LIST, UPDATE_TIME) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' );
  226. INSERT INTO XXL_JOB_INFO(ID, JOB_GROUP, JOB_DESC, ADD_TIME, UPDATE_TIME, AUTHOR, ALARM_EMAIL, SCHEDULE_TYPE, SCHEDULE_CONF, MISFIRE_STRATEGY, EXECUTOR_ROUTE_STRATEGY, EXECUTOR_HANDLER, EXECUTOR_PARAM, EXECUTOR_BLOCK_STRATEGY, EXECUTOR_TIMEOUT, EXECUTOR_FAIL_RETRY_COUNT, GLUE_TYPE, GLUE_SOURCE, GLUE_REMARK, GLUE_UPDATETIME, CHILD_JOBID) VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
  227. INSERT INTO XXL_JOB_USER(ID, USERNAME, PASSWORD, ROLE, PERMISSION) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
  228. INSERT INTO XXL_JOB_LOCK (LOCK_NAME) VALUES ( 'schedule_lock');
复制代码
3.1.5 postgresql

  1. CREATE SEQUENCE xxl_job_group_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  2. SELECT
  3.         setval ( 'xxl_job_group_id_seq', 2, TRUE );
  4. CREATE SEQUENCE xxl_job_info_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  5. CREATE SEQUENCE xxl_job_log_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  6. CREATE SEQUENCE xxl_job_logglue_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  7. CREATE SEQUENCE xxl_job_log_report_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  8. CREATE SEQUENCE xxl_job_registry_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  9. CREATE SEQUENCE xxl_job_user_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1;
  10. SELECT
  11.         setval ( 'xxl_job_user_id_seq', 2, TRUE );
  12. SELECT
  13.         setval ( 'xxl_job_info_id_seq', 2, TRUE );
  14. CREATE TABLE xxl_job_group (
  15.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_group_id_seq' :: regclass ),
  16.         app_name VARCHAR ( 64 ) NOT NULL,
  17.         title VARCHAR ( 128 ) NOT NULL,
  18.         address_type INT2 NOT NULL,
  19.         address_list text,
  20.         update_time TIMESTAMP ( 6 )
  21. );
  22. COMMENT ON COLUMN xxl_job_group.app_name IS '执行器AppName';
  23. COMMENT ON COLUMN xxl_job_group.title IS '执行器名称';
  24. COMMENT ON COLUMN xxl_job_group.address_type IS '执行器地址类型:0=自动注册、1=手动录入';
  25. COMMENT ON COLUMN xxl_job_group.address_list IS '执行器地址列表,多地址逗号分隔';
  26. CREATE TABLE xxl_job_info (
  27.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_info_id_seq' :: regclass ),
  28.         job_group INT4 NOT NULL,
  29.         job_desc VARCHAR ( 255 ) NOT NULL,
  30.         add_time TIMESTAMP ( 6 ),
  31.         update_time TIMESTAMP ( 6 ),
  32.         author VARCHAR ( 64 ),
  33.         alarm_email VARCHAR ( 255 ),
  34.         schedule_type VARCHAR ( 50 ) NOT NULL,
  35.         schedule_conf VARCHAR ( 128 ),
  36.         misfire_strategy VARCHAR ( 50 ) NOT NULL,
  37.         executor_route_strategy VARCHAR ( 50 ),
  38.         executor_handler VARCHAR ( 255 ),
  39.         executor_param VARCHAR ( 512 ),
  40.         executor_block_strategy VARCHAR ( 50 ),
  41.         executor_timeout INT4 NOT NULL,
  42.         executor_fail_retry_count INT4 NOT NULL,
  43.         glue_type VARCHAR ( 50 ) NOT NULL,
  44.         glue_source text,
  45.         glue_remark VARCHAR ( 128 ),
  46.         glue_updatetime TIMESTAMP ( 6 ),
  47.         child_jobid VARCHAR ( 255 ),
  48.         trigger_status INT2 NOT NULL DEFAULT 0,
  49.         trigger_last_time INT8 NOT NULL,
  50.         trigger_next_time INT8 NOT NULL
  51. );
  52. COMMENT ON COLUMN xxl_job_info.job_group IS '执行器主键ID';
  53. COMMENT ON COLUMN xxl_job_info.author IS '作者';
  54. COMMENT ON COLUMN xxl_job_info.alarm_email IS '报警邮件';
  55. COMMENT ON COLUMN xxl_job_info.schedule_type IS '调度类型';
  56. COMMENT ON COLUMN xxl_job_info.schedule_conf IS '调度配置,值含义取决于调度类型';
  57. COMMENT ON COLUMN xxl_job_info.misfire_strategy IS '调度过期策略';
  58. COMMENT ON COLUMN xxl_job_info.executor_route_strategy IS '执行器路由策略';
  59. COMMENT ON COLUMN xxl_job_info.executor_handler IS '执行器任务handler';
  60. COMMENT ON COLUMN xxl_job_info.executor_param IS '执行器任务参数';
  61. COMMENT ON COLUMN xxl_job_info.executor_block_strategy IS '阻塞处理策略';
  62. COMMENT ON COLUMN xxl_job_info.executor_timeout IS '任务执行超时时间,单位秒';
  63. COMMENT ON COLUMN xxl_job_info.executor_fail_retry_count IS '失败重试次数';
  64. COMMENT ON COLUMN xxl_job_info.glue_type IS 'GLUE类型';
  65. COMMENT ON COLUMN xxl_job_info.glue_source IS 'GLUE源代码';
  66. COMMENT ON COLUMN xxl_job_info.glue_remark IS 'GLUE备注';
  67. COMMENT ON COLUMN xxl_job_info.glue_updatetime IS 'GLUE更新时间';
  68. COMMENT ON COLUMN xxl_job_info.child_jobid IS '子任务ID,多个逗号分隔';
  69. COMMENT ON COLUMN xxl_job_info.trigger_status IS '调度状态:0-停止,1-运行';
  70. COMMENT ON COLUMN xxl_job_info.trigger_last_time IS '上次调度时间';
  71. COMMENT ON COLUMN xxl_job_info.trigger_next_time IS '下次调度时间';
  72. CREATE TABLE xxl_job_lock ( lock_name VARCHAR ( 50 ) NOT NULL );
  73. COMMENT ON COLUMN xxl_job_lock.lock_name IS '锁名称';
  74. CREATE TABLE xxl_job_log (
  75.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_log_id_seq' :: regclass ),
  76.         job_group INT4 NOT NULL,
  77.         job_id INT4 NOT NULL,
  78.         executor_address VARCHAR ( 255 ),
  79.         executor_handler VARCHAR ( 255 ),
  80.         executor_param VARCHAR ( 512 ) ,
  81.         executor_sharding_param VARCHAR ( 20 ) ,
  82.         executor_fail_retry_count INT4 NOT NULL DEFAULT 0,
  83.         trigger_time TIMESTAMP ( 6 ),
  84.         trigger_code INT4 NOT NULL,
  85.         trigger_msg text ,
  86.         handle_time TIMESTAMP ( 6 ),
  87.         handle_code INT4 NOT NULL,
  88.         handle_msg text ,
  89.         alarm_status INT2 NOT NULL DEFAULT 0
  90. );
  91. COMMENT ON COLUMN xxl_job_log.job_group IS '执行器主键ID';
  92. COMMENT ON COLUMN xxl_job_log.job_id IS '任务,主键ID';
  93. COMMENT ON COLUMN xxl_job_log.executor_address IS '执行器地址,本次执行的地址';
  94. COMMENT ON COLUMN xxl_job_log.executor_handler IS '执行器任务handler';
  95. COMMENT ON COLUMN xxl_job_log.executor_param IS '执行器任务参数';
  96. COMMENT ON COLUMN xxl_job_log.executor_sharding_param IS '执行器任务分片参数,格式如 1/2';
  97. COMMENT ON COLUMN xxl_job_log.executor_fail_retry_count IS '失败重试次数';
  98. COMMENT ON COLUMN xxl_job_log.trigger_time IS '调度-时间';
  99. COMMENT ON COLUMN xxl_job_log.trigger_code IS '调度-结果';
  100. COMMENT ON COLUMN xxl_job_log.trigger_msg IS '调度-日志';
  101. COMMENT ON COLUMN xxl_job_log.handle_time IS '执行-时间';
  102. COMMENT ON COLUMN xxl_job_log.handle_code IS '执行-状态';
  103. COMMENT ON COLUMN xxl_job_log.handle_msg IS '执行-日志';
  104. COMMENT ON COLUMN xxl_job_log.alarm_status IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';
  105. CREATE TABLE xxl_job_log_report (
  106.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_log_report_id_seq' :: regclass ),
  107.         trigger_day TIMESTAMP ( 6 ),
  108.         running_count INT4 NOT NULL,
  109.         suc_count INT4 NOT NULL,
  110.         fail_count INT4 NOT NULL,
  111.         update_time TIMESTAMP ( 6 )
  112. );
  113. COMMENT ON COLUMN xxl_job_log_report.trigger_day IS '调度-时间';
  114. COMMENT ON COLUMN xxl_job_log_report.running_count IS '运行中-日志数量';
  115. COMMENT ON COLUMN xxl_job_log_report.suc_count IS '执行成功-日志数量';
  116. COMMENT ON COLUMN xxl_job_log_report.fail_count IS '执行失败-日志数量';
  117. CREATE TABLE xxl_job_logglue (
  118.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_logglue_id_seq' :: regclass ),
  119.         job_id INT4 NOT NULL,
  120.         glue_type VARCHAR ( 50 ) ,
  121.         glue_source text ,
  122.         glue_remark VARCHAR ( 128 )  NOT NULL,
  123.         add_time TIMESTAMP ( 6 ),
  124.         update_time TIMESTAMP ( 6 )
  125. );
  126. COMMENT ON COLUMN xxl_job_logglue.job_id IS '任务,主键ID';
  127. COMMENT ON COLUMN xxl_job_logglue.glue_type IS 'GLUE类型';
  128. COMMENT ON COLUMN xxl_job_logglue.glue_source IS 'GLUE源代码';
  129. COMMENT ON COLUMN xxl_job_logglue.glue_remark IS 'GLUE备注';
  130. CREATE TABLE xxl_job_registry (
  131.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_registry_id_seq' :: regclass ),
  132.         registry_group VARCHAR ( 50 )  NOT NULL,
  133.         registry_key VARCHAR ( 255 )  NOT NULL,
  134.         registry_value VARCHAR ( 255 )  NOT NULL,
  135.         update_time TIMESTAMP ( 6 )
  136. );
  137. CREATE TABLE xxl_job_user (
  138.         id INT4 NOT NULL DEFAULT nextval ( 'xxl_job_user_id_seq' :: regclass ),
  139.         username VARCHAR ( 50 )  NOT NULL,
  140.         password VARCHAR ( 50 )  NOT NULL,
  141.         role INT2 NOT NULL,
  142.         permission VARCHAR ( 255 )  
  143. );
  144. COMMENT ON COLUMN xxl_job_user.username IS '账号';
  145. COMMENT ON COLUMN xxl_job_user.password IS '密码';
  146. COMMENT ON COLUMN xxl_job_user.role IS '角色:0-普通用户、1-管理员';
  147. COMMENT ON COLUMN xxl_job_user.permission IS '权限:执行器ID列表,多个逗号分割';
  148. ALTER TABLE xxl_job_group ADD CONSTRAINT xxl_job_group_pkey PRIMARY KEY ( id );
  149. ALTER TABLE xxl_job_info ADD CONSTRAINT xxl_job_info_pkey PRIMARY KEY ( id );
  150. ALTER TABLE xxl_job_lock ADD CONSTRAINT xxl_job_lock_pkey PRIMARY KEY ( lock_name );
  151. ALTER TABLE xxl_job_log ADD CONSTRAINT xxl_job_log_pkey PRIMARY KEY ( id );
  152. ALTER TABLE xxl_job_log_report ADD CONSTRAINT xxl_job_log_report_pkey PRIMARY KEY ( id );
  153. ALTER TABLE xxl_job_logglue ADD CONSTRAINT xxl_job_logglue_pkey PRIMARY KEY ( id );
  154. ALTER TABLE xxl_job_registry ADD CONSTRAINT xxl_job_registry_pkey PRIMARY KEY ( id );
  155. ALTER TABLE xxl_job_user ADD CONSTRAINT xxl_job_user_pkey PRIMARY KEY ( id );
  156. INSERT INTO xxl_job_user ( id, username, password, role, permission )
  157. VALUES
  158.         ( 1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL );
  159. INSERT INTO xxl_job_group ( id, app_name, title, address_type, address_list, update_time )
  160. VALUES
  161.         ( 1, 'xxl-job-executor', '执行器-测试组', 0, NULL, '2022-06-05 22:21:31' );
  162. INSERT INTO xxl_job_lock ( lock_name )
  163. VALUES
  164.         ( 'schedule_lock' );
复制代码
3.1.6 sqlserver

  1. CREATE TABLE xxl_job_info (
  2.   id int NOT NULL identity(1,1),
  3.   job_group int NOT NULL,
  4.   job_desc varchar(255) NOT NULL,
  5.   add_time datetime DEFAULT NULL,
  6.   update_time datetime DEFAULT NULL,
  7.   author varchar(64) DEFAULT NULL ,
  8.   alarm_email varchar(255) DEFAULT NULL ,
  9.   schedule_type varchar(50) NOT NULL DEFAULT 'NONE',
  10.   schedule_conf varchar(128) DEFAULT NULL ,
  11.   misfire_strategy varchar(50) NOT NULL DEFAULT 'DO_NOTHING' ,
  12.   executor_route_strategy varchar(50) DEFAULT NULL ,
  13.   executor_handler varchar(255) DEFAULT NULL ,
  14.   executor_param varchar(512) DEFAULT NULL ,
  15.   executor_block_strategy varchar(50) DEFAULT NULL ,
  16.   executor_timeout int NOT NULL DEFAULT '0',
  17.   executor_fail_retry_count int NOT NULL DEFAULT '0',
  18.   glue_type varchar(50) NOT NULL ,
  19.   glue_source varchar(512) ,
  20.   glue_remark varchar(128) DEFAULT NULL ,
  21.   glue_updatetime datetime DEFAULT NULL ,
  22.   child_jobid varchar(255) DEFAULT NULL ,
  23.   trigger_status smallint NOT NULL DEFAULT '0',
  24.   trigger_last_time bigint NOT NULL DEFAULT '0' ,
  25.   trigger_next_time bigint NOT NULL DEFAULT '0',
  26.   PRIMARY KEY (id)
  27. );
  28. CREATE TABLE xxl_job_log (
  29.   id bigint NOT NULL identity(1,1),
  30.   job_group int NOT NULL,
  31.   job_id int NOT NULL ,
  32.   executor_address varchar(255) DEFAULT NULL ,
  33.   executor_handler varchar(255) DEFAULT NULL,
  34.   executor_param varchar(512) DEFAULT NULL,
  35.   executor_sharding_param varchar(20) DEFAULT NULL,
  36.   executor_fail_retry_count int NOT NULL DEFAULT '0',
  37.   trigger_time datetime DEFAULT NULL,
  38.   trigger_code int NOT NULL,
  39.   trigger_msg varchar(512),
  40.   handle_time datetime DEFAULT NULL,
  41.   handle_code int NOT NULL ,
  42.   handle_msg varchar(512),
  43.   alarm_status smallint NOT NULL DEFAULT '0',
  44.   PRIMARY KEY (id)
  45. );
  46. CREATE NONCLUSTERED INDEX I_trigger_time ON xxl_job_log(trigger_time);
  47. CREATE NONCLUSTERED INDEX I_handle_code ON xxl_job_log(handle_code);
  48. CREATE TABLE xxl_job_log_report (
  49.   id int NOT NULL identity(1,1) PRIMARY KEY ,
  50.   trigger_day datetime DEFAULT NULL,
  51.   running_count int NOT NULL DEFAULT '0',
  52.   suc_count int NOT NULL DEFAULT '0',
  53.   fail_count int NOT NULL DEFAULT '0',
  54.   update_time datetime DEFAULT NULL,
  55.         constraint i_trigger_day unique(trigger_day)
  56. );
  57. CREATE TABLE xxl_job_logglue (
  58.   id int NOT NULL identity(1,1),
  59.   job_id int NOT NULL,
  60.   glue_type varchar(50) DEFAULT NULL,
  61.   glue_source varchar(512),
  62.   glue_remark varchar(128) NOT NULL,
  63.   add_time datetime DEFAULT NULL,
  64.   update_time datetime DEFAULT NULL,
  65.   PRIMARY KEY (id)
  66. );
  67. CREATE TABLE xxl_job_registry (
  68.   id int NOT NULL identity(1,1),
  69.   registry_group varchar(50) NOT NULL,
  70.   registry_key varchar(255) NOT NULL,
  71.   registry_value varchar(255) NOT NULL,
  72.   update_time datetime DEFAULT NULL,
  73.   PRIMARY KEY (id)
  74. );
  75. CREATE NONCLUSTERED INDEX i_g_k_v ON xxl_job_registry(registry_group, registry_key, registry_value);
  76. CREATE TABLE xxl_job_group (
  77.   id int NOT NULL identity(1,1),
  78.   app_name varchar(64) NOT NULL,
  79.   title varchar(128) NOT NULL,
  80.   address_type smallint NOT NULL DEFAULT '0',
  81.   address_list varchar(512),
  82.   update_time datetime DEFAULT NULL,
  83.   PRIMARY KEY (id)
  84. );
  85. CREATE TABLE xxl_job_user (
  86.   id int NOT NULL identity(1,1),
  87.   username varchar(50) NOT NULL,
  88.   password varchar(50) NOT NULL,
  89.   role smallint NOT NULL,
  90.   permission varchar(255) DEFAULT NULL,
  91.   PRIMARY KEY (id),
  92.   constraint i_username unique(username)
  93. );
  94. CREATE TABLE xxl_job_lock (
  95.   lock_name varchar(50) NOT NULL,
  96.   PRIMARY KEY (lock_name)
  97. );
  98. INSERT INTO xxl_job_group(app_name, title, address_type, address_list, update_time) VALUES ('xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' );
  99. INSERT INTO xxl_job_info(job_group, job_desc, add_time, update_time, author, alarm_email, schedule_type, schedule_conf, misfire_strategy, executor_route_strategy, executor_handler, executor_param, executor_block_strategy, executor_timeout, executor_fail_retry_count, glue_type, glue_source, glue_remark, glue_updatetime, child_jobid) VALUES (1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
  100. INSERT INTO xxl_job_user(username, password, role, permission) VALUES ('admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
  101. INSERT INTO xxl_job_lock ( lock_name) VALUES ( 'schedule_lock');
复制代码
3.2 JobLogReportHelper.java 文件修改

改这个文件的缘故原由是因为每个数据对字段大小写的问题,主要是69行引起的:
  1. Map<String, Object> triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLogReport(todayFrom, todayTo);
复制代码
会调用下面的mapper代码
  1. <select id="findLogReport" resultType="java.util.Map" >
  2.                 SELECT
  3.                         COUNT(handle_code) triggerDayCount,
  4.                         SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
  5.                         SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
  6.                 FROM xxl_job_log
  7.                 WHERE trigger_time BETWEEN #{from} and #{to}
  8.     </select>
复制代码

然后返回三个字段:triggerDayCount、triggerDayCountRunning、triggerDayCountSuc
但是在pg、kingbase里面返回的是全大写的TRIGGERDAYCOUNT、TRIGGERDAYCOUNTRUNNING、TRIGGERDAYCOUNTSUC
然而源码里面是直接写死的,因此改造了一番,直接复制下面的代码覆盖你本地的java文件即可
我的思绪是:统一将key换成大写

  1. package com.xxl.job.admin.core.thread;import com.xxl.job.admin.core.conf.XxlJobAdminConfig;import com.xxl.job.admin.core.model.XxlJobLogReport;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.TimeUnit;/** * job log report helper * * @author xuxueli 2019-11-22 */public class JobLogReportHelper {    private static Logger logger = LoggerFactory.getLogger(JobLogReportHelper.class);    private static JobLogReportHelper instance = new JobLogReportHelper();    public static JobLogReportHelper getInstance(){        return instance;    }    private Thread logrThread;    private volatile boolean toStop = false;    public void start(){        logrThread = new Thread(new Runnable() {            @Override            public void run() {                // last clean log time                long lastCleanLogTime = 0;                while (!toStop) {                    // 1、log-report refresh: refresh log report in 3 days                    try {                        for (int i = 0; i < 3; i++) {                            // today                            Calendar itemDay = Calendar.getInstance();                            itemDay.add(Calendar.DAY_OF_MONTH, -i);                            itemDay.set(Calendar.HOUR_OF_DAY, 0);                            itemDay.set(Calendar.MINUTE, 0);                            itemDay.set(Calendar.SECOND, 0);                            itemDay.set(Calendar.MILLISECOND, 0);                            Date todayFrom = itemDay.getTime();                            itemDay.set(Calendar.HOUR_OF_DAY, 23);                            itemDay.set(Calendar.MINUTE, 59);                            itemDay.set(Calendar.SECOND, 59);                            itemDay.set(Calendar.MILLISECOND, 999);                            Date todayTo = itemDay.getTime();                            // refresh log-report every minute                            XxlJobLogReport xxlJobLogReport = new XxlJobLogReport();                            xxlJobLogReport.setTriggerDay(todayFrom);                            xxlJobLogReport.setRunningCount(0);                            xxlJobLogReport.setSucCount(0);                            xxlJobLogReport.setFailCount(0);                            Map<String, Object> triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLogReport(todayFrom, todayTo);
  2.                             if (triggerCountMap!=null && triggerCountMap.size()>0) {                                //key全部转大写 妈的 省的你小写 他大写 你特么驼峰                                Map<String, Object> useTriggerCountMap = new ConcurrentHashMap<>();                                for (String key : triggerCountMap.keySet()) {                                    Object value = triggerCountMap.get(key);                                    useTriggerCountMap.put(key.toUpperCase(), value);                                }                                int triggerDayCount = useTriggerCountMap.containsKey("TRIGGERDAYCOUNT")?Integer.valueOf(String.valueOf(useTriggerCountMap.get("TRIGGERDAYCOUNT"))):0;                                int triggerDayCountRunning = useTriggerCountMap.containsKey("TRIGGERDAYCOUNTRUNNING")?Integer.valueOf(String.valueOf(useTriggerCountMap.get("TRIGGERDAYCOUNTRUNNING"))):0;                                int triggerDayCountSuc = useTriggerCountMap.containsKey("TRIGGERDAYCOUNTSUC")?Integer.valueOf(String.valueOf(useTriggerCountMap.get("TRIGGERDAYCOUNTSUC"))):0;                                int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;                                xxlJobLogReport.setRunningCount(triggerDayCountRunning);                                xxlJobLogReport.setSucCount(triggerDayCountSuc);                                xxlJobLogReport.setFailCount(triggerDayCountFail);                            }                            // do refresh                            int ret = XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().update(xxlJobLogReport);                            if (ret < 1) {                                XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().save(xxlJobLogReport);                            }                        }                    } catch (Exception e) {                        if (!toStop) {                            logger.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e);                        }                    }                    // 2、log-clean: switch open & once each day                    if (XxlJobAdminConfig.getAdminConfig().getLogretentiondays()>0                            && System.currentTimeMillis() - lastCleanLogTime > 24*60*60*1000) {                        // expire-time                        Calendar expiredDay = Calendar.getInstance();                        expiredDay.add(Calendar.DAY_OF_MONTH, -1 * XxlJobAdminConfig.getAdminConfig().getLogretentiondays());                        expiredDay.set(Calendar.HOUR_OF_DAY, 0);                        expiredDay.set(Calendar.MINUTE, 0);                        expiredDay.set(Calendar.SECOND, 0);                        expiredDay.set(Calendar.MILLISECOND, 0);                        Date clearBeforeTime = expiredDay.getTime();                        // clean expired log                        List<Long> logIds = null;                        do {                            logIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findClearLogIds(0, 0, clearBeforeTime, 0, 1000);                            if (logIds!=null && logIds.size()>0) {                                XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().clearLog(logIds);                            }                        } while (logIds!=null && logIds.size()>0);                        // update clean time                        lastCleanLogTime = System.currentTimeMillis();                    }                    try {                        TimeUnit.MINUTES.sleep(1);                    } catch (Exception e) {                        if (!toStop) {                            logger.error(e.getMessage(), e);                        }                    }                }                logger.info(">>>>>>>>>>> xxl-job, job log report thread stop");            }        });        logrThread.setDaemon(true);        logrThread.setName("xxl-job, admin JobLogReportHelper");        logrThread.start();    }    public void toStop(){        toStop = true;        // interrupt and wait        logrThread.interrupt();        try {            logrThread.join();        } catch (InterruptedException e) {            logger.error(e.getMessage(), e);        }    }}
复制代码
3.3 mapper的修改

3.3.1 XxlJobGroupMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xxl.job.admin.dao.XxlJobGroupDao">
  5.        
  6.         <resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" >
  7.                 <result column="id" property="id" />
  8.             <result column="app_name" property="appname" />
  9.             <result column="title" property="title" />
  10.                 <result column="address_type" property="addressType" />
  11.                 <result column="address_list" property="addressList" />
  12.                 <result column="update_time" property="updateTime" />
  13.         </resultMap>
  14.         <sql id="Base_Column_List">
  15.                 t.id,
  16.                 t.app_name,
  17.                 t.title,
  18.                 t.address_type,
  19.                 t.address_list,
  20.                 t.update_time
  21.         </sql>
  22.         <select id="findAll" resultMap="XxlJobGroup">
  23.                 SELECT <include refid="Base_Column_List" />
  24.                 FROM xxl_job_group t
  25.                 ORDER BY t.app_name, t.title, t.id ASC
  26.         </select>
  27.         <select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
  28.                 SELECT <include refid="Base_Column_List" />
  29.                 FROM xxl_job_group t
  30.                 WHERE t.address_type = #{addressType}
  31.                 ORDER BY t.app_name, t.title, t.id ASC
  32.         </select>
  33.         <sql databaseId="oracle" id='XXL_JOB_GROUP_ID'>XXL_JOB_GROUP_SEQ_ID.NEXTVAL</sql>
  34.         <insert id="save" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id">
  35.                 <selectKey keyProperty="id" resultType="int" order="BEFORE">
  36.                         select <include refid="XXL_JOB_GROUP_ID" /> from dual
  37.                 </selectKey>
  38.                 INSERT INTO xxl_job_group (id, app_name, title, address_type, address_list, update_time)
  39.                 values (#{id},  #{appname,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{addressType,jdbcType=NUMERIC}, #{addressList,jdbcType=VARCHAR}, #{updateTime,jdbcType=DATE} )
  40.         </insert>
  41.         <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >
  42.                 INSERT INTO xxl_job_group ( app_name, title, address_type, address_list, update_time)
  43.                 values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} )
  44.         </insert>
  45.         <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
  46.                 UPDATE xxl_job_group
  47.                 SET app_name = #{appname},
  48.                         title = #{title},
  49.                         address_type = #{addressType},
  50.                         address_list = #{addressList},
  51.                         update_time = #{updateTime}
  52.                 WHERE id = #{id}
  53.         </update>
  54.         <update id="update" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
  55.                 UPDATE xxl_job_group
  56.                 SET app_name = #{appname,jdbcType=VARCHAR},
  57.                         title = #{title,jdbcType=VARCHAR},
  58.                         address_type = #{addressType,jdbcType=VARCHAR},
  59.                         address_list = #{addressList,jdbcType=CLOB},
  60.                         update_time = #{updateTime,jdbcType=DATE}
  61.                 WHERE id = #{id}
  62.         </update>
  63.         <delete id="remove" parameterType="java.lang.Integer" >
  64.                 DELETE FROM xxl_job_group
  65.                 WHERE id = #{id}
  66.         </delete>
  67.         <select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
  68.                 SELECT <include refid="Base_Column_List" />
  69.                 FROM xxl_job_group t
  70.                 WHERE t.id = #{id}
  71.         </select>
  72.         <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobGroup">
  73.                 SELECT <include refid="Base_Column_List" />
  74.                 FROM xxl_job_group t
  75.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  76.                         <if test="appname != null and appname != ''">
  77.                                 AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
  78.                         </if>
  79.                         <if test="title != null and title != ''">
  80.                                 AND t.title like CONCAT(CONCAT('%', #{title}), '%')
  81.                         </if>
  82.                 </trim>
  83.                 ORDER BY t.app_name, t.title, t.id ASC
  84.                 LIMIT #{offset}, #{pagesize}
  85.         </select>
  86.         <select id="pageList" databaseId="sqlserver" parameterType="java.util.HashMap" resultMap="XxlJobGroup">
  87.                 SELECT <include refid="Base_Column_List" /> FROM
  88.                 (
  89.                 SELECT <include refid="Base_Column_List"/>
  90.                 ,row_number () OVER ( ORDER BY t.app_name, t.title, t.id ASC ) AS rownumber
  91.                 FROM xxl_job_group AS t
  92.                 <trim prefix="WHERE" prefixOverrides="AND | OR">
  93.                         <if test="appname != null and appname != ''">
  94.                                 AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
  95.                         </if>
  96.                         <if test="title != null and title != ''">
  97.                                 AND t.title like CONCAT(CONCAT('%', #{title}), '%')
  98.                         </if>
  99.                 </trim>
  100.                 ) AS t
  101.                 WHERE t.rownumber <![CDATA[ > ]]> #{offset}
  102.                 AND t.rownumber <![CDATA[ <= ]]> (#{offset} + #{pagesize})
  103.         </select>
  104.         <select id="pageList" databaseId="kingbase" parameterType="java.util.HashMap" resultMap="XxlJobGroup">
  105.                 SELECT <include refid="Base_Column_List" />
  106.                 FROM xxl_job_group t
  107.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  108.                         <if test="appname != null and appname != ''">
  109.                                 AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
  110.                         </if>
  111.                         <if test="title != null and title != ''">
  112.                                 AND t.title like CONCAT(CONCAT('%', #{title}), '%')
  113.                         </if>
  114.                 </trim>
  115.                 ORDER BY t.app_name, t.title, t.id ASC
  116.                 LIMIT #{pagesize} offset #{offset}
  117.         </select>
  118.         <select id="pageList" databaseId="pg" parameterType="java.util.HashMap" resultMap="XxlJobGroup">
  119.                 SELECT <include refid="Base_Column_List" />
  120.                 FROM xxl_job_group t
  121.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  122.                         <if test="appname != null and appname != ''">
  123.                                 AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
  124.                         </if>
  125.                         <if test="title != null and title != ''">
  126.                                 AND t.title like CONCAT(CONCAT('%', #{title}), '%')
  127.                         </if>
  128.                 </trim>
  129.                 ORDER BY t.app_name, t.title, t.id ASC
  130.                 LIMIT #{pagesize} offset #{offset}
  131.         </select>
  132.         <select id="pageList" databaseId="oracle" parameterType="java.util.HashMap" resultMap="XxlJobGroup">
  133.                 SELECT <include refid="Base_Column_List" />
  134.                 FROM (
  135.                 SELECT t.*, ROWNUM AS rnum
  136.                 FROM xxl_job_group t
  137.                 WHERE 1 = 1
  138.                 <if test="appname != null and appname != ''">
  139.                         AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
  140.                 </if>
  141.                 <if test="title != null and title != ''">
  142.                         AND t.title like CONCAT(CONCAT('%', #{title}), '%')
  143.                 </if>
  144.                 ORDER BY t.app_name, t.title, t.id ASC
  145.                 ) t
  146.                 WHERE rnum <![CDATA[ > ]]> #{offset} AND rnum <![CDATA[ <= ]]> (#{offset} + #{pagesize})
  147.         </select>
  148.         <!--<select id="pageList" databaseId="dm" parameterType="java.util.HashMap" resultMap="XxlJobGroup">-->
  149.                 <!--SELECT <include refid="Base_Column_List" />, rownum-->
  150.                 <!--FROM xxl_job_group t-->
  151.                 <!--<trim prefix="WHERE" prefixOverrides="AND | OR" >-->
  152.                         <!--<if test="appname != null and appname != ''">-->
  153.                                 <!--AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')-->
  154.                         <!--</if>-->
  155.                         <!--<if test="title != null and title != ''">-->
  156.                                 <!--AND t.title like CONCAT(CONCAT('%', #{title}), '%')-->
  157.                         <!--</if>-->
  158.                         <!--AND        rownum <![CDATA[ > ]]> #{offset} AND rownum <![CDATA[ < ]]> (#{offset} + #{pagesize} + 1)-->
  159.                 <!--</trim>-->
  160.                 <!--ORDER BY t.app_name, t.title, t.id ASC-->
  161.         <!--</select>-->
  162.         <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
  163.                 SELECT count(1)
  164.                 FROM xxl_job_group t
  165.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  166.                         <if test="appname != null and appname != ''">
  167.                                 AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
  168.                         </if>
  169.                         <if test="title != null and title != ''">
  170.                                 AND t.title like CONCAT(CONCAT('%', #{title}), '%')
  171.                         </if>
  172.                 </trim>
  173.         </select>
  174. </mapper>
复制代码
3.3.2 XxlJobInfoMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xxl.job.admin.dao.XxlJobInfoDao">
  5.         <resultMap id="XxlJobInfo" type="com.xxl.job.admin.core.model.XxlJobInfo" >
  6.                 <result column="id" property="id" />
  7.                 <result column="job_group" property="jobGroup" />
  8.             <result column="job_desc" property="jobDesc" />
  9.             <result column="add_time" property="addTime" />
  10.             <result column="update_time" property="updateTime" />
  11.             <result column="author" property="author" />
  12.             <result column="alarm_email" property="alarmEmail" />
  13.                 <result column="schedule_type" property="scheduleType" />
  14.                 <result column="schedule_conf" property="scheduleConf" />
  15.                 <result column="misfire_strategy" property="misfireStrategy" />
  16.                 <result column="executor_route_strategy" property="executorRouteStrategy" />
  17.                 <result column="executor_handler" property="executorHandler" />
  18.             <result column="executor_param" property="executorParam" />
  19.                 <result column="executor_block_strategy" property="executorBlockStrategy" />
  20.                 <result column="executor_timeout" property="executorTimeout" />
  21.                 <result column="executor_fail_retry_count" property="executorFailRetryCount" />
  22.             <result column="glue_type" property="glueType" />
  23.             <result column="glue_source" property="glueSource" />
  24.             <result column="glue_remark" property="glueRemark" />
  25.                 <result column="glue_updatetime" property="glueUpdatetime" />
  26.                 <result column="child_jobid" property="childJobId" />
  27.                 <result column="trigger_status" property="triggerStatus" />
  28.                 <result column="trigger_last_time" property="triggerLastTime" />
  29.                 <result column="trigger_next_time" property="triggerNextTime" />
  30.         </resultMap>
  31.         <sql id="Base_Column_List">
  32.                 t.id,
  33.                 t.job_group,
  34.                 t.job_desc,
  35.                 t.add_time,
  36.                 t.update_time,
  37.                 t.author,
  38.                 t.alarm_email,
  39.                 t.schedule_type,
  40.                 t.schedule_conf,
  41.                 t.misfire_strategy,
  42.                 t.executor_route_strategy,
  43.                 t.executor_handler,
  44.                 t.executor_param,
  45.                 t.executor_block_strategy,
  46.                 t.executor_timeout,
  47.                 t.executor_fail_retry_count,
  48.                 t.glue_type,
  49.                 t.glue_source,
  50.                 t.glue_remark,
  51.                 t.glue_updatetime,
  52.                 t.child_jobid,
  53.                 t.trigger_status,
  54.                 t.trigger_last_time,
  55.                 t.trigger_next_time
  56.         </sql>
  57.         <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  58.                 SELECT <include refid="Base_Column_List" />
  59.                 FROM xxl_job_info t
  60.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  61.                         <if test="jobGroup gt 0">
  62.                                 AND t.job_group = #{jobGroup}
  63.                         </if>
  64.             <if test="triggerStatus gte 0">
  65.                 AND t.trigger_status = #{triggerStatus}
  66.             </if>
  67.                         <if test="jobDesc != null and jobDesc != ''">
  68.                                 AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
  69.                         </if>
  70.                         <if test="executorHandler != null and executorHandler != ''">
  71.                                 AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
  72.                         </if>
  73.                         <if test="author != null and author != ''">
  74.                                 AND t.author like CONCAT(CONCAT('%', #{author}), '%')
  75.                         </if>
  76.                 </trim>
  77.                 ORDER BY id DESC
  78.                 LIMIT #{offset}, #{pagesize}
  79.         </select>
  80.         <select id="pageList" databaseId="sqlserver" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  81.                 SELECT <include refid="Base_Column_List" />
  82.                 FROM (SELECT row_number () OVER ( ORDER BY id DESC ) AS rownumber ,
  83.                 <include refid="Base_Column_List"/>FROM xxl_job_info AS t
  84.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  85.                         <if
  86.                                         test="jobGroup gt 0">AND t.job_group = #{jobGroup}
  87.                         </if>
  88.                         <if test="triggerStatus gte 0">
  89.                                 AND t.trigger_status = #{triggerStatus}
  90.                         </if>
  91.                         <if test="jobDesc != null and jobDesc != ''">
  92.                                 AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
  93.                         </if>
  94.                         <if test="executorHandler != null and executorHandler != ''">
  95.                                 AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
  96.                         </if>
  97.                         <if test="author != null and author != ''">
  98.                                 AND t.author like CONCAT(CONCAT('%', #{author}), '%')
  99.                         </if>
  100.                 </trim>) AS t
  101.                 WHERE t.rownumber <![CDATA[ > ]]> #{offset}
  102.                 AND t.rownumber <![CDATA[ <= ]]> (#{offset} + #{pagesize})
  103.         </select>
  104.         <select id="pageList" databaseId="kingbase" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  105.                 SELECT <include refid="Base_Column_List" />
  106.                 FROM xxl_job_info t
  107.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  108.                         <if test="jobGroup gt 0">
  109.                                 AND t.job_group = #{jobGroup}
  110.                         </if>
  111.                         <if test="triggerStatus gte 0">
  112.                                 AND t.trigger_status = #{triggerStatus}
  113.                         </if>
  114.                         <if test="jobDesc != null and jobDesc != ''">
  115.                                 AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
  116.                         </if>
  117.                         <if test="executorHandler != null and executorHandler != ''">
  118.                                 AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
  119.                         </if>
  120.                         <if test="author != null and author != ''">
  121.                                 AND t.author like CONCAT(CONCAT('%', #{author}), '%')
  122.                         </if>
  123.                 </trim>
  124.                 ORDER BY id DESC
  125.                 LIMIT #{pagesize} offset #{offset}
  126.         </select>
  127.         <select id="pageList" databaseId="pg" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  128.                 SELECT <include refid="Base_Column_List" />
  129.                 FROM xxl_job_info t
  130.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  131.                         <if test="jobGroup gt 0">
  132.                                 AND t.job_group = #{jobGroup}
  133.                         </if>
  134.                         <if test="triggerStatus gte 0">
  135.                                 AND t.trigger_status = #{triggerStatus}
  136.                         </if>
  137.                         <if test="jobDesc != null and jobDesc != ''">
  138.                                 AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
  139.                         </if>
  140.                         <if test="executorHandler != null and executorHandler != ''">
  141.                                 AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
  142.                         </if>
  143.                         <if test="author != null and author != ''">
  144.                                 AND t.author like CONCAT(CONCAT('%', #{author}), '%')
  145.                         </if>
  146.                 </trim>
  147.                 ORDER BY id DESC
  148.                 LIMIT #{pagesize}  offset #{offset}
  149.         </select>
  150.         <select id="pageList" databaseId="oracle" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  151.                 SELECT <include refid="Base_Column_List" />
  152.                 FROM (
  153.                 SELECT t.*, ROWNUM AS rnum
  154.                 FROM xxl_job_info t
  155.                 WHERE 1 = 1
  156.                 <if test="jobGroup gt 0">
  157.                         AND t.job_group = #{jobGroup}
  158.                 </if>
  159.                 <if test="triggerStatus gte 0">
  160.                         AND t.trigger_status = #{triggerStatus}
  161.                 </if>
  162.                 <if test="jobDesc != null and jobDesc != ''">
  163.                         AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
  164.                 </if>
  165.                 <if test="executorHandler != null and executorHandler != ''">
  166.                         AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
  167.                 </if>
  168.                 <if test="author != null and author != ''">
  169.                         AND t.author like CONCAT(CONCAT('%', #{author}), '%')
  170.                 </if>
  171.                 ORDER BY id DESC
  172.                 ) t
  173.                 WHERE rnum <![CDATA[ > ]]> #{offset} AND rnum <![CDATA[ <= ]]> (#{offset} + #{pagesize})
  174.         </select>
  175.         <!--<select id="pageList" databaseId="dm" parameterType="java.util.HashMap" resultMap="XxlJobInfo">-->
  176.                 <!--SELECT <include refid="Base_Column_List" />, rownum-->
  177.                 <!--FROM xxl_job_info t-->
  178.                 <!--<trim prefix="WHERE" prefixOverrides="AND | OR" >-->
  179.                         <!--<if test="jobGroup gt 0">-->
  180.                                 <!--AND t.job_group = #{jobGroup}-->
  181.                         <!--</if>-->
  182.                         <!--<if test="triggerStatus gte 0">-->
  183.                                 <!--AND t.trigger_status = #{triggerStatus}-->
  184.                         <!--</if>-->
  185.                         <!--<if test="jobDesc != null and jobDesc != ''">-->
  186.                                 <!--AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')-->
  187.                         <!--</if>-->
  188.                         <!--<if test="executorHandler != null and executorHandler != ''">-->
  189.                                 <!--AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')-->
  190.                         <!--</if>-->
  191.                         <!--<if test="author != null and author != ''">-->
  192.                                 <!--AND t.author like CONCAT(CONCAT('%', #{author}), '%')-->
  193.                         <!--</if>-->
  194.                         <!--AND rownum <![CDATA[ > ]]> #{offset} AND rownum <![CDATA[ < ]]> (#{offset} + #{pagesize} + 1)-->
  195.                 <!--</trim>-->
  196.                 <!--ORDER BY id DESC-->
  197.                 <!--LIMIT #{offset}, #{pagesize}-->
  198.         <!--</select>-->
  199.         <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
  200.                 SELECT count(1)
  201.                 FROM xxl_job_info t
  202.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  203.                         <if test="jobGroup gt 0">
  204.                                 AND t.job_group = #{jobGroup}
  205.                         </if>
  206.             <if test="triggerStatus gte 0">
  207.                 AND t.trigger_status = #{triggerStatus}
  208.             </if>
  209.                         <if test="jobDesc != null and jobDesc != ''">
  210.                                 AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
  211.                         </if>
  212.                         <if test="executorHandler != null and executorHandler != ''">
  213.                                 AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
  214.                         </if>
  215.                         <if test="author != null and author != ''">
  216.                                 AND t.author like CONCAT(CONCAT('%', #{author}), '%')
  217.                         </if>
  218.                 </trim>
  219.         </select>
  220.         <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
  221.                 INSERT INTO xxl_job_info (
  222.                         job_group,
  223.                         job_desc,
  224.                         add_time,
  225.                         update_time,
  226.                         author,
  227.                         alarm_email,
  228.                         schedule_type,
  229.                         schedule_conf,
  230.                         misfire_strategy,
  231.             executor_route_strategy,
  232.                         executor_handler,
  233.                         executor_param,
  234.                         executor_block_strategy,
  235.                         executor_timeout,
  236.                         executor_fail_retry_count,
  237.                         glue_type,
  238.                         glue_source,
  239.                         glue_remark,
  240.                         glue_updatetime,
  241.                         child_jobid,
  242.                         trigger_status,
  243.                         trigger_last_time,
  244.                         trigger_next_time
  245.                 ) VALUES (
  246.                         #{jobGroup},
  247.                         #{jobDesc},
  248.                         #{addTime},
  249.                         #{updateTime},
  250.                         #{author},
  251.                         #{alarmEmail},
  252.                         #{scheduleType},
  253.                         #{scheduleConf},
  254.                         #{misfireStrategy},
  255.                         #{executorRouteStrategy},
  256.                         #{executorHandler},
  257.                         #{executorParam},
  258.                         #{executorBlockStrategy},
  259.                         #{executorTimeout},
  260.                         #{executorFailRetryCount},
  261.                         #{glueType},
  262.                         #{glueSource},
  263.                         #{glueRemark},
  264.                         #{glueUpdatetime},
  265.                         #{childJobId},
  266.                         #{triggerStatus},
  267.                         #{triggerLastTime},
  268.                         #{triggerNextTime}
  269.                 )
  270.                 <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
  271.                         SELECT LAST_INSERT_ID()
  272.                         /*SELECT @@IDENTITY AS id*/
  273.                 </selectKey>-->
  274.         </insert>
  275.         <sql databaseId="oracle" id='XXL_JOB_INFO_ID'>XXL_JOB_INFO_SEQ_ID.NEXTVAL</sql>
  276.         <insert id="save" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
  277.                 <selectKey keyProperty="id" resultType="int" order="BEFORE">
  278.                         select <include refid="XXL_JOB_INFO_ID" /> from dual
  279.                 </selectKey>
  280.                 INSERT INTO xxl_job_info (
  281.                 id,
  282.                 job_group,
  283.                 job_desc,
  284.                 add_time,
  285.                 update_time,
  286.                 author,
  287.                 alarm_email,
  288.                 schedule_type,
  289.                 schedule_conf,
  290.                 misfire_strategy,
  291.                 executor_route_strategy,
  292.                 executor_handler,
  293.                 executor_param,
  294.                 executor_block_strategy,
  295.                 executor_timeout,
  296.                 executor_fail_retry_count,
  297.                 glue_type,
  298.                 glue_source,
  299.                 glue_remark,
  300.                 glue_updatetime,
  301.                 child_jobid,
  302.                 trigger_status,
  303.                 trigger_last_time,
  304.                 trigger_next_time
  305.                 ) VALUES (
  306.                 #{id},
  307.                 #{jobGroup},
  308.                 #{jobDesc},
  309.                 #{addTime},
  310.                 #{updateTime},
  311.                 #{author},
  312.                 #{alarmEmail},
  313.                 #{scheduleType},
  314.                 #{scheduleConf},
  315.                 #{misfireStrategy},
  316.                 #{executorRouteStrategy},
  317.                 #{executorHandler},
  318.                 #{executorParam},
  319.                 #{executorBlockStrategy},
  320.                 #{executorTimeout},
  321.                 #{executorFailRetryCount},
  322.                 #{glueType},
  323.                 #{glueSource,jdbcType=CLOB},
  324.                 #{glueRemark},
  325.                 #{glueUpdatetime},
  326.                 #{childJobId},
  327.                 #{triggerStatus},
  328.                 #{triggerLastTime},
  329.                 #{triggerNextTime}
  330.                 )
  331.                 <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
  332.                         SELECT LAST_INSERT_ID()
  333.                         /*SELECT @@IDENTITY AS id*/
  334.                 </selectKey>-->
  335.         </insert>
  336.         <select id="loadById" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  337.                 SELECT <include refid="Base_Column_List" />
  338.                 FROM xxl_job_info t
  339.                 WHERE t.id = #{id}
  340.         </select>
  341.         <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
  342.                 UPDATE xxl_job_info
  343.                 SET
  344.                         job_group = #{jobGroup},
  345.                         job_desc = #{jobDesc},
  346.                         update_time = #{updateTime},
  347.                         author = #{author},
  348.                         alarm_email = #{alarmEmail},
  349.                         schedule_type = #{scheduleType},
  350.                         schedule_conf = #{scheduleConf},
  351.                         misfire_strategy = #{misfireStrategy},
  352.                         executor_route_strategy = #{executorRouteStrategy},
  353.                         executor_handler = #{executorHandler},
  354.                         executor_param = #{executorParam},
  355.                         executor_block_strategy = #{executorBlockStrategy},
  356.                         executor_timeout = ${executorTimeout},
  357.                         executor_fail_retry_count = ${executorFailRetryCount},
  358.                         glue_type = #{glueType},
  359.                         glue_source = #{glueSource},
  360.                         glue_remark = #{glueRemark},
  361.                         glue_updatetime = #{glueUpdatetime},
  362.                         child_jobid = #{childJobId},
  363.                         trigger_status = #{triggerStatus},
  364.                         trigger_last_time = #{triggerLastTime},
  365.                         trigger_next_time = #{triggerNextTime}
  366.                 WHERE id = #{id}
  367.         </update>
  368.         <update id="update" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
  369.                 UPDATE xxl_job_info
  370.                 SET
  371.                         job_group = #{jobGroup},
  372.                         job_desc = #{jobDesc,jdbcType=VARCHAR},
  373.                         update_time = #{updateTime,jdbcType=DATE},
  374.                         author = #{author,jdbcType=VARCHAR},
  375.                         alarm_email = #{alarmEmail,jdbcType=VARCHAR},
  376.                         schedule_type = #{scheduleType,jdbcType=VARCHAR},
  377.                         schedule_conf = #{scheduleConf,jdbcType=VARCHAR},
  378.                         misfire_strategy = #{misfireStrategy,jdbcType=VARCHAR},
  379.                         executor_route_strategy = #{executorRouteStrategy,jdbcType=VARCHAR},
  380.                         executor_handler = #{executorHandler,jdbcType=VARCHAR},
  381.                         executor_param = #{executorParam,jdbcType=VARCHAR},
  382.                         executor_block_strategy = #{executorBlockStrategy,jdbcType=VARCHAR},
  383.                         executor_timeout = ${executorTimeout},
  384.                         executor_fail_retry_count = ${executorFailRetryCount},
  385.                         glue_type = #{glueType,jdbcType=VARCHAR},
  386.                         glue_source = #{glueSource,jdbcType=CLOB},
  387.                         glue_remark = #{glueRemark,jdbcType=VARCHAR},
  388.                         glue_updatetime = #{glueUpdatetime,jdbcType=DATE},
  389.                         child_jobid = #{childJobId,jdbcType=VARCHAR},
  390.                         trigger_status = #{triggerStatus,jdbcType=VARCHAR},
  391.                         trigger_last_time = #{triggerLastTime},
  392.                         trigger_next_time = #{triggerNextTime}
  393.                 WHERE id = #{id}
  394.         </update>
  395.         <delete id="delete" parameterType="java.util.HashMap">
  396.                 DELETE
  397.                 FROM xxl_job_info
  398.                 WHERE id = #{id}
  399.         </delete>
  400.         <select id="getJobsByGroup" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  401.                 SELECT <include refid="Base_Column_List" />
  402.                 FROM xxl_job_info t
  403.                 WHERE t.job_group = #{jobGroup}
  404.         </select>
  405.         <select id="findAllCount" resultType="int">
  406.                 SELECT count(1)
  407.                 FROM xxl_job_info
  408.         </select>
  409.         <select id="scheduleJobQuery" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  410.                 SELECT <include refid="Base_Column_List" />
  411.                 FROM xxl_job_info t
  412.                 WHERE t.trigger_status = 1
  413.                         and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
  414.                 ORDER BY id ASC
  415.                 LIMIT #{pagesize}
  416.         </select>
  417.         <select id="scheduleJobQuery" databaseId="sqlserver" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  418.                 SELECT top (#{pagesize}) <include refid="Base_Column_List" />
  419.                 FROM xxl_job_info AS t
  420.                 WHERE t.trigger_status = 1
  421.                 and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
  422.                 ORDER BY id ASC
  423.         </select>
  424.         <select id="scheduleJobQuery" databaseId="oracle" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
  425.                 SELECT <include refid="Base_Column_List" />
  426.                 FROM (
  427.                 SELECT t.*, ROWNUM AS rnum
  428.                 FROM xxl_job_info t
  429.                 WHERE t.trigger_status = 1
  430.                 AND t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
  431.                 ORDER BY id ASC
  432.                 ) t
  433.                 WHERE rnum <![CDATA[ <= ]]> #{pagesize}
  434.         </select>
  435.         <update id="scheduleUpdate" parameterType="com.xxl.job.admin.core.model.XxlJobInfo"  >
  436.                 UPDATE xxl_job_info
  437.                 SET
  438.                         trigger_last_time = #{triggerLastTime},
  439.                         trigger_next_time = #{triggerNextTime},
  440.                         trigger_status = #{triggerStatus}
  441.                 WHERE id = #{id}
  442.         </update>
  443. </mapper>
复制代码
3.3.3 XxlJobLogGlueMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xxl.job.admin.dao.XxlJobLogGlueDao">
  5.        
  6.         <resultMap id="XxlJobLogGlue" type="com.xxl.job.admin.core.model.XxlJobLogGlue" >
  7.                 <result column="id" property="id" />
  8.             <result column="job_id" property="jobId" />
  9.                 <result column="glue_type" property="glueType" />
  10.             <result column="glue_source" property="glueSource" />
  11.             <result column="glue_remark" property="glueRemark" />
  12.             <result column="add_time" property="addTime" />
  13.             <result column="update_time" property="updateTime" />
  14.         </resultMap>
  15.         <sql id="Base_Column_List">
  16.                 t.id,
  17.                 t.job_id,
  18.                 t.glue_type,
  19.                 t.glue_source,
  20.                 t.glue_remark,
  21.                 t.add_time,
  22.                 t.update_time
  23.         </sql>
  24.        
  25.         <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
  26.                 INSERT INTO xxl_job_logglue (
  27.                         job_id,
  28.                         glue_type,
  29.                         glue_source,
  30.                         glue_remark,
  31.                         add_time,
  32.                         update_time
  33.                 ) VALUES (
  34.                         #{jobId},
  35.                         #{glueType},
  36.                         #{glueSource},
  37.                         #{glueRemark},
  38.                         #{addTime},
  39.                         #{updateTime}
  40.                 )
  41.                 <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
  42.                         SELECT LAST_INSERT_ID()
  43.                 </selectKey>-->
  44.         </insert>
  45.         <sql databaseId="oracle" id='XXL_JOB_LOGGLUE_ID'>XXL_JOB_LOGGLUE_SEQ_ID.NEXTVAL</sql>
  46.         <insert id="save" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
  47.                 <selectKey keyProperty="id" resultType="int" order="BEFORE">
  48.                         select <include refid="XXL_JOB_LOGGLUE_ID" /> from dual
  49.                 </selectKey>
  50.                 INSERT INTO xxl_job_logglue (
  51.                 id,
  52.                 job_id,
  53.                 glue_type,
  54.                 glue_source,
  55.                 glue_remark,
  56.                 add_time,
  57.                 update_time
  58.                 ) VALUES (
  59.                 #{id},
  60.                 #{jobId},
  61.                 #{glueType,jdbcType=VARCHAR},
  62.                 #{glueSource,jdbcType=CLOB},
  63.                 #{glueRemark,jdbcType=VARCHAR},
  64.                 #{addTime,jdbcType=DATE},
  65.                 #{updateTime,jdbcType=DATE}
  66.                 )
  67.                 <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
  68.                         SELECT LAST_INSERT_ID()
  69.                 </selectKey>-->
  70.         </insert>
  71.        
  72.         <select id="findByJobId" parameterType="java.lang.Integer" resultMap="XxlJobLogGlue">
  73.                 SELECT <include refid="Base_Column_List" />
  74.                 FROM xxl_job_logglue t
  75.                 WHERE t.job_id = #{jobId}
  76.                 ORDER BY id DESC
  77.         </select>
  78.        
  79.         <delete id="removeOld" >
  80.                 DELETE FROM xxl_job_logglue
  81.                 WHERE id NOT in(
  82.                         SELECT id FROM(
  83.                                 SELECT id FROM xxl_job_logglue
  84.                                 WHERE job_id = #{jobId}
  85.                                 ORDER BY update_time desc
  86.                                 LIMIT 0, #{limit}
  87.                         ) t1
  88.                 ) AND job_id = #{jobId}
  89.         </delete>
  90.         <delete id="removeOld" databaseId="sqlserver">
  91.                 DELETE FROM xxl_job_logglue
  92.                 WHERE id NOT in(
  93.                         SELECT id FROM(
  94.                                 SELECT top(#{limit}) id FROM xxl_job_logglue
  95.                                 WHERE job_id = #{jobId}
  96.                                 ORDER BY update_time desc
  97.                         ) t1
  98.                 ) AND job_id = #{jobId}
  99.         </delete>
  100.         <delete id="removeOld" databaseId="kingbase">
  101.                 DELETE FROM xxl_job_logglue
  102.                 WHERE id NOT in(
  103.                         SELECT id FROM(
  104.                                 SELECT id FROM xxl_job_logglue
  105.                                 WHERE job_id = #{jobId}
  106.                                 ORDER BY update_time desc
  107.                                 LIMIT #{limit}
  108.                         ) t1
  109.                 ) AND job_id = #{jobId}
  110.         </delete>
  111.         <delete id="removeOld" databaseId="pg">
  112.                 DELETE FROM xxl_job_logglue
  113.                 WHERE id NOT in(
  114.                         SELECT id FROM(
  115.                                 SELECT id FROM xxl_job_logglue
  116.                                 WHERE job_id = #{jobId}
  117.                                 ORDER BY update_time desc
  118.                                 LIMIT  #{limit}
  119.                         ) t1
  120.                 ) AND job_id = #{jobId}
  121.         </delete>
  122.         <delete id="removeOld" databaseId="oracle">
  123.                 DELETE FROM xxl_job_logglue
  124.                 WHERE id NOT in(
  125.                         SELECT id FROM(
  126.                                 SELECT id, rownum FROM xxl_job_logglue
  127.                                 WHERE job_id = #{jobId} AND rownum <![CDATA[ < ]]> (#{limit} + 1)
  128.                                 ORDER BY update_time desc
  129.                         ) t1
  130.                 ) AND job_id = #{jobId}
  131.         </delete>
  132.         <!--<delete id="removeOld" databaseId="dm">-->
  133.                 <!--DELETE FROM xxl_job_logglue-->
  134.                 <!--WHERE id NOT in(-->
  135.                         <!--SELECT id FROM(-->
  136.                                 <!--SELECT id, rownum FROM xxl_job_logglue-->
  137.                                 <!--WHERE job_id = #{jobId} AND rownum <![CDATA[ < ]]> (#{limit} + 1)-->
  138.                                 <!--ORDER BY update_time desc-->
  139.                         <!--) t1-->
  140.                 <!--) AND job_id = #{jobId}-->
  141.         <!--</delete>-->
  142.        
  143.         <delete id="deleteByJobId" parameterType="java.lang.Integer" >
  144.                 DELETE FROM xxl_job_logglue
  145.                 WHERE job_id = #{jobId}
  146.         </delete>
  147.        
  148. </mapper>
复制代码
3.3.4 XxlJobLogMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.xxl.job.admin.dao.XxlJobLogDao">                <resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" >                <result column="id" property="id" />                <result column="job_group" property="jobGroup" />                <result column="job_id" property="jobId" />                <result column="executor_address" property="executorAddress" />                <result column="executor_handler" property="executorHandler" />            <result column="executor_param" property="executorParam" />                <result column="executor_sharding_param" property="executorShardingParam" />                <result column="executor_fail_retry_count" property="executorFailRetryCount" />                        <result column="trigger_time" property="triggerTime" />            <result column="trigger_code" property="triggerCode" />            <result column="trigger_msg" property="triggerMsg" />                        <result column="handle_time" property="handleTime" />            <result column="handle_code" property="handleCode" />            <result column="handle_msg" property="handleMsg" />                <result column="alarm_status" property="alarmStatus" />        </resultMap>        <sql id="Base_Column_List">                t.id,                t.job_group,                t.job_id,                t.executor_address,                t.executor_handler,                t.executor_param,                t.executor_sharding_param,                t.executor_fail_retry_count,                t.trigger_time,                t.trigger_code,                t.trigger_msg,                t.handle_time,                t.handle_code,                t.handle_msg,                t.alarm_status        </sql>                <select id="pageList" resultMap="XxlJobLog">                SELECT <include refid="Base_Column_List" />                FROM xxl_job_log t                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobId==0 and jobGroup gt 0">                                AND t.job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND t.job_id = #{jobId}                        </if>                        <if test="triggerTimeStart != null">                                AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}                        </if>                        <if test="triggerTimeEnd != null">                                AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}                        </if>                        <if test="logStatus == 1" >                                AND t.handle_code = 200                        </if>                        <if test="logStatus == 2" >                                AND (                                        t.trigger_code NOT IN (0, 200) OR                                        t.handle_code NOT IN (0, 200)                                )                        </if>                        <if test="logStatus == 3" >                                AND t.trigger_code = 200                                AND t.handle_code = 0                        </if>                </trim>                ORDER BY t.trigger_time DESC                LIMIT #{offset}, #{pagesize}        </select>        <select id="pageList" databaseId="sqlserver" resultMap="XxlJobLog">                SELECT <include refid="Base_Column_List" />                from (                SELECT row_number () OVER ( ORDER BY t.trigger_time DESC ) AS rownumber,                <include refid="Base_Column_List" />                FROM xxl_job_log AS t                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobId==0 and jobGroup gt 0">                                AND t.job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND t.job_id = #{jobId}                        </if>                        <if test="triggerTimeStart != null">                                AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}                        </if>                        <if test="triggerTimeEnd != null">                                AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}                        </if>                        <if test="logStatus == 1" >                                AND t.handle_code = 200                        </if>                        <if test="logStatus == 2" >                                AND (                                t.trigger_code NOT IN (0, 200) OR                                t.handle_code NOT IN (0, 200)                                )                        </if>                        <if test="logStatus == 3" >                                AND t.trigger_code = 200                                AND t.handle_code = 0                        </if>                </trim>                ) AS t                WHERE t.rownumber <![CDATA[ > ]]> #{offset}                AND t.rownumber <![CDATA[ <= ]]> (#{offset} + #{pagesize})        </select>        <select id="pageList" resultMap="XxlJobLog" databaseId="kingbase">                SELECT <include refid="Base_Column_List" />                FROM xxl_job_log t                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobId==0 and jobGroup gt 0">                                AND t.job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND t.job_id = #{jobId}                        </if>                        <if test="triggerTimeStart != null">                                AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}                        </if>                        <if test="triggerTimeEnd != null">                                AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}                        </if>                        <if test="logStatus == 1" >                                AND t.handle_code = 200                        </if>                        <if test="logStatus == 2" >                                AND (                                t.trigger_code NOT IN (0, 200) OR                                t.handle_code NOT IN (0, 200)                                )                        </if>                        <if test="logStatus == 3" >                                AND t.trigger_code = 200                                AND t.handle_code = 0                        </if>                </trim>                ORDER BY t.trigger_time DESC                LIMIT #{pagesize} offset #{offset}        </select>        <select id="pageList" databaseId="pg" resultMap="XxlJobLog">                SELECT <include refid="Base_Column_List" />                FROM xxl_job_log t                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobId==0 and jobGroup gt 0">                                AND t.job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND t.job_id = #{jobId}                        </if>                        <if test="triggerTimeStart != null">                                AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}                        </if>                        <if test="triggerTimeEnd != null">                                AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}                        </if>                        <if test="logStatus == 1" >                                AND t.handle_code = 200                        </if>                        <if test="logStatus == 2" >                                AND (                                t.trigger_code NOT IN (0, 200) OR                                t.handle_code NOT IN (0, 200)                                )                        </if>                        <if test="logStatus == 3" >                                AND t.trigger_code = 200                                AND t.handle_code = 0                        </if>                </trim>                ORDER BY t.trigger_time DESC                LIMIT #{pagesize} offset #{offset}        </select>        <select id="pageList" databaseId="oracle" resultMap="XxlJobLog">                SELECT <include refid="Base_Column_List" />                FROM (                SELECT t.*, ROWNUM AS rnum                FROM xxl_job_log t                WHERE 1 = 1                <if test="jobId==0 and jobGroup gt 0">                        AND t.job_group = #{jobGroup}                </if>                <if test="jobId gt 0">                        AND t.job_id = #{jobId}                </if>                <if test="triggerTimeStart != null">                        AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}                </if>                <if test="triggerTimeEnd != null">                        AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}                </if>                <if test="logStatus == 1" >                        AND t.handle_code = 200                </if>                <if test="logStatus == 2" >                        AND (                        t.trigger_code NOT IN (0, 200) OR                        t.handle_code NOT IN (0, 200)                        )                </if>                <if test="logStatus == 3" >                        AND t.trigger_code = 200                        AND t.handle_code = 0                </if>                ORDER BY t.trigger_time DESC                ) t                WHERE rnum <![CDATA[ > ]]> #{offset} AND rnum <![CDATA[ <= ]]> (#{offset} + #{pagesize})        </select>        <!--<select id="pageList" databaseId="dm" resultMap="XxlJobLog">-->                <!--SELECT <include refid="Base_Column_List" />, rownum-->                <!--FROM xxl_job_log t-->                <!--<trim prefix="WHERE" prefixOverrides="AND | OR" >-->                        <!--<if test="jobId==0 and jobGroup gt 0">-->                                <!--AND t.job_group = #{jobGroup}-->                        <!--</if>-->                        <!--<if test="jobId gt 0">-->                                <!--AND t.job_id = #{jobId}-->                        <!--</if>-->                        <!--<if test="triggerTimeStart != null">-->                                <!--AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}-->                        <!--</if>-->                        <!--<if test="triggerTimeEnd != null">-->                                <!--AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}-->                        <!--</if>-->                        <!--<if test="logStatus == 1" >-->                                <!--AND t.handle_code = 200-->                        <!--</if>-->                        <!--<if test="logStatus == 2" >-->                                <!--AND (-->                                <!--t.trigger_code NOT IN (0, 200) OR-->                                <!--t.handle_code NOT IN (0, 200)-->                                <!--)-->                        <!--</if>-->                        <!--<if test="logStatus == 3" >-->                                <!--AND t.trigger_code = 200-->                                <!--AND t.handle_code = 0-->                        <!--</if>-->                        <!--AND rownum <![CDATA[ > ]]> #{offset} AND rownum <![CDATA[ < ]]> (#{offset} + #{pagesize} + 1)-->                <!--</trim>-->                <!--ORDER BY t.trigger_time DESC-->        <!--</select>-->                <select id="pageListCount" resultType="int">                SELECT count(1)                FROM xxl_job_log t                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobId==0 and jobGroup gt 0">                                AND t.job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND t.job_id = #{jobId}                        </if>                        <if test="triggerTimeStart != null">                                AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}                        </if>                        <if test="triggerTimeEnd != null">                                AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}                        </if>                        <if test="logStatus == 1" >                                AND t.handle_code = 200                        </if>                        <if test="logStatus == 2" >                                AND (                                        t.trigger_code NOT IN (0, 200) OR                                        t.handle_code NOT IN (0, 200)                                )                        </if>                        <if test="logStatus == 3" >                                AND t.trigger_code = 200                                AND t.handle_code = 0                        </if>                </trim>        </select>                <select id="load" parameterType="java.lang.Long" resultMap="XxlJobLog">                SELECT <include refid="Base_Column_List" />                FROM xxl_job_log t                WHERE t.id = #{id}        </select>        <sql databaseId="oracle" id='XXL_JOB_LOG_ID'>XXL_JOB_LOGGLUE_SEQ_ID.NEXTVAL</sql>        <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >                INSERT INTO xxl_job_log (                        job_group,                        job_id,                        trigger_time,                        trigger_code,                        handle_code                ) VALUES (                        #{jobGroup},                        #{jobId},                        #{triggerTime},                        #{triggerCode},                        #{handleCode}                )                <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">                        SELECT LAST_INSERT_ID()                 </selectKey>-->        </insert>        <insert id="save" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >                <selectKey keyProperty="id" resultType="int" order="BEFORE">                        select <include refid="XXL_JOB_LOG_ID" /> from dual                </selectKey>                INSERT INTO xxl_job_log (                id,                job_group,                job_id,                trigger_time,                trigger_code,                handle_code                ) VALUES (                #{id},                #{jobGroup},                #{jobId},                #{triggerTime},                #{triggerCode},                #{handleCode}                )                <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">                        SELECT LAST_INSERT_ID()                </selectKey>-->        </insert>        <update id="updateTriggerInfo" >                UPDATE xxl_job_log                SET                        trigger_time= #{triggerTime},                        trigger_code= #{triggerCode},                        trigger_msg= #{triggerMsg},                        executor_address= #{executorAddress},                        executor_handler=#{executorHandler},                        executor_param= #{executorParam},                        executor_sharding_param= #{executorShardingParam},                        executor_fail_retry_count= #{executorFailRetryCount}                WHERE id= #{id}        </update>        <update id="updateTriggerInfo" databaseId="oracle">                UPDATE xxl_job_log                SET                        trigger_time= #{triggerTime,jdbcType=DATE},                        trigger_code= #{triggerCode,jdbcType=VARCHAR},                        trigger_msg= #{triggerMsg,jdbcType=VARCHAR},                        executor_address= #{executorAddress,jdbcType=VARCHAR},                        executor_handler=#{executorHandler,jdbcType=VARCHAR},                        executor_param= #{executorParam,jdbcType=VARCHAR},                        executor_sharding_param= #{executorShardingParam,jdbcType=VARCHAR},                        executor_fail_retry_count= #{executorFailRetryCount}                WHERE id= #{id}        </update>        <update id="updateHandleInfo">                UPDATE xxl_job_log                SET                         handle_time= #{handleTime},                        handle_code= #{handleCode},                        handle_msg= #{handleMsg}                WHERE id= #{id}        </update>        <update id="updateHandleInfo" databaseId="oracle">                UPDATE xxl_job_log                SET                        handle_time= #{handleTime,jdbcType=DATE},                        handle_code= #{handleCode,jdbcType=VARCHAR},                        handle_msg= #{handleMsg,jdbcType=CLOB}                WHERE id= #{id}        </update>                <delete id="delete" >                delete from xxl_job_log                WHERE job_id = #{jobId}        </delete>    <!--<select id="triggerCountByDay" resultType="java.util.Map" >                SELECT                        DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay,                        COUNT(handle_code) triggerDayCount,                        SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,                        SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc                FROM xxl_job_log                WHERE trigger_time BETWEEN #{from} and #{to}                GROUP BY triggerDay                ORDER BY triggerDay    </select>-->    <select id="findLogReport" resultType="java.util.Map" >
  2.                 SELECT
  3.                         COUNT(handle_code) triggerDayCount,
  4.                         SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
  5.                         SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
  6.                 FROM xxl_job_log
  7.                 WHERE trigger_time BETWEEN #{from} and #{to}
  8.     </select>        <select id="findLogReport" databaseId="kingbase" resultType="java.util.Map" >                SELECT                        COUNT(handle_code) TRIGGERDAYCOUNT,                        SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as TRIGGERDAYCOUNTRUNNING,                        SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as TRIGGERDAYCOUNTSUC                FROM xxl_job_log                WHERE trigger_time BETWEEN #{from} and #{to}    </select>        <select id="findClearLogIds" resultType="long" >                SELECT id FROM xxl_job_log                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobGroup gt 0">                                AND job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND job_id = #{jobId}                        </if>                        <if test="clearBeforeTime != null">                                AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}                        </if>                        <if test="clearBeforeNum gt 0">                                AND id NOT in(                                SELECT id FROM(                                SELECT id FROM xxl_job_log t                                <trim prefix="WHERE" prefixOverrides="AND | OR" >                                        <if test="jobGroup gt 0">                                                AND t.job_group = #{jobGroup}                                        </if>                                        <if test="jobId gt 0">                                                AND t.job_id = #{jobId}                                        </if>                                </trim>                                ORDER BY t.trigger_time desc                                LIMIT 0, #{clearBeforeNum}                                ) t1                                )                        </if>                </trim>                order by id asc                LIMIT #{pagesize}        </select>        <select id="findClearLogIds" databaseId="sqlserver" resultType="long" >                SELECT top (#{pagesize}) id FROM xxl_job_log                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobGroup gt 0">                                AND job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND job_id = #{jobId}                        </if>                        <if test="clearBeforeTime != null">                                AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}                        </if>                        <if test="clearBeforeNum gt 0">                                AND id NOT in(                                SELECT id FROM(                                SELECT top (#{clearBeforeNum}) id FROM xxl_job_log AS t                                <trim prefix="WHERE" prefixOverrides="AND | OR" >                                        <if test="jobGroup gt 0">                                                AND t.job_group = #{jobGroup}                                        </if>                                        <if test="jobId gt 0">                                                AND t.job_id = #{jobId}                                        </if>                                </trim>                                ORDER BY t.trigger_time desc                                ) t1                                )                        </if>                </trim>                order by id asc        </select>        <select id="findClearLogIds" databaseId="kingbase" resultType="long" >                SELECT id FROM xxl_job_log                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobGroup gt 0">                                AND job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND job_id = #{jobId}                        </if>                        <if test="clearBeforeTime != null">                                AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}                        </if>                        <if test="clearBeforeNum gt 0">                                AND id NOT in(                                SELECT id FROM(                                SELECT id FROM xxl_job_log t                                <trim prefix="WHERE" prefixOverrides="AND | OR" >                                        <if test="jobGroup gt 0">                                                AND t.job_group = #{jobGroup}                                        </if>                                        <if test="jobId gt 0">                                                AND t.job_id = #{jobId}                                        </if>                                </trim>                                ORDER BY t.trigger_time desc                                LIMIT #{clearBeforeNum}                                ) t1                                )                        </if>                </trim>                order by id asc                LIMIT #{pagesize}        </select>        <select id="findClearLogIds" databaseId="pg" resultType="long" >                SELECT id FROM xxl_job_log                <trim prefix="WHERE" prefixOverrides="AND | OR" >                        <if test="jobGroup gt 0">                                AND job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND job_id = #{jobId}                        </if>                        <if test="clearBeforeTime != null">                                AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}                        </if>                        <if test="clearBeforeNum gt 0">                                AND id NOT in(                                SELECT id FROM(                                SELECT id FROM xxl_job_log AS t                                <trim prefix="WHERE" prefixOverrides="AND | OR" >                                        <if test="jobGroup gt 0">                                                AND t.job_group = #{jobGroup}                                        </if>                                        <if test="jobId gt 0">                                                AND t.job_id = #{jobId}                                        </if>                                </trim>                                ORDER BY t.trigger_time desc                                LIMIT  #{clearBeforeNum}                                ) t1                                )                        </if>                </trim>                order by id asc                LIMIT #{pagesize}        </select>        <select id="findClearLogIds" databaseId="oracle" resultType="long" >                SELECT id                FROM (                SELECT t.id, ROWNUM AS rnum                FROM xxl_job_log t                WHERE 1 = 1                <if test="jobGroup gt 0">                        AND t.job_group = #{jobGroup}                </if>                <if test="jobId gt 0">                        AND t.job_id = #{jobId}                </if>                <if test="clearBeforeTime != null">                        AND t.trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}                </if>                <if test="clearBeforeNum gt 0">                        AND t.id NOT IN (                        SELECT id                        FROM (                        SELECT t1.id                        FROM xxl_job_log t1                        WHERE 1 = 1                        <if test="jobGroup gt 0">                                AND t1.job_group = #{jobGroup}                        </if>                        <if test="jobId gt 0">                                AND t1.job_id = #{jobId}                        </if>                        ORDER BY t1.trigger_time DESC                        FETCH FIRST #{clearBeforeNum} ROWS ONLY                        )                        )                </if>                ORDER BY t.id ASC                )                WHERE rnum <![CDATA[ <= ]]> #{pagesize}        </select>        <!--<select id="findClearLogIds" databaseId="dm" resultType="long" >-->                <!--SELECT temp.id id FROM (-->                <!--SELECT id, rownum FROM xxl_job_log-->                <!--<trim prefix="WHERE" prefixOverrides="AND | OR" >-->                        <!--<if test="jobGroup gt 0">-->                                <!--AND job_group = #{jobGroup}-->                        <!--</if>-->                        <!--<if test="jobId gt 0">-->                                <!--AND job_id = #{jobId}-->                        <!--</if>-->                        <!--<if test="clearBeforeTime != null">-->                                <!--AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}-->                        <!--</if>-->                        <!--<if test="clearBeforeNum gt 0">-->                                <!--AND id NOT in(-->                                <!--SELECT id FROM(-->                                <!--SELECT id FROM xxl_job_log t-->                                <!--<trim prefix="WHERE" prefixOverrides="AND | OR" >-->                                        <!--<if test="jobGroup gt 0">-->                                                <!--AND t.job_group = #{jobGroup}-->                                        <!--</if>-->                                        <!--<if test="jobId gt 0">-->                                                <!--AND t.job_id = #{jobId}-->                                        <!--</if>-->                                <!--</trim>-->                                <!--ORDER BY t.trigger_time desc-->                                <!--LIMIT 0, #{clearBeforeNum}-->                                <!--) t1-->                                <!--)-->                        <!--</if>-->                        <!--AND rownum <![CDATA[ < ]]> (#{pagesize} + 1)-->                <!--</trim>-->                <!--order by id asc) temp-->        <!--</select>-->        <delete id="clearLog" >                delete from xxl_job_log                WHERE id in                <foreach collection="logIds" item="item" open="(" close=")" separator="," >                        #{item}                </foreach>        </delete>        <select id="findFailJobLogIds" resultType="long" >                SELECT id FROM xxl_job_log                WHERE !(                        (trigger_code in (0, 200) and handle_code = 0)                        OR                        (handle_code = 200)                )                AND alarm_status = 0                ORDER BY id ASC                LIMIT #{pagesize}        </select>        <select id="findFailJobLogIds" databaseId="sqlserver" resultType="long" >                SELECT top (#{pagesize}) id FROM xxl_job_log                WHERE (  (trigger_code != 0 or handle_code != 0) and (handle_code != 200)  )                  AND alarm_status = 0                ORDER BY id ASC        </select>        <select id="findFailJobLogIds" databaseId="kingbase" resultType="long" >                SELECT id FROM xxl_job_log                WHERE not(                        (trigger_code in (0, 200) and handle_code = 0)                        OR                        (handle_code = 200)                )                AND alarm_status = 0                ORDER BY id ASC                LIMIT #{pagesize}        </select>        <select id="findFailJobLogIds" databaseId="pg" resultType="long" >                SELECT id FROM xxl_job_log                WHERE (                        (trigger_code in (0, 200) and handle_code = 0)                        OR                        (handle_code = 200)                )=false                AND alarm_status = 0                ORDER BY id ASC                LIMIT #{pagesize}        </select>        <select id="findFailJobLogIds" databaseId="oracle" resultType="long">                SELECT id FROM (                        SELECT id, ROWNUM AS rnum FROM xxl_job_log                        WHERE not(                                (trigger_code in (0, 200) and handle_code = 0)                                OR                                (handle_code = 200)                        )                        AND alarm_status = 0                        ORDER BY id ASC            )                WHERE rnum <![CDATA[ <= ]]> #{pagesize,jdbcType=INTEGER}        </select>        <select id="findFailJobLogIds" databaseId="dm" resultType="long" >                SELECT id FROM xxl_job_log                WHERE not(                        (trigger_code in (0, 200) and handle_code = 0)                        OR                        (handle_code = 200)                )                AND alarm_status = 0                ORDER BY id ASC                LIMIT #{pagesize}        </select>        <update id="updateAlarmStatus" >                UPDATE xxl_job_log                SET                        alarm_status = #{newAlarmStatus}                WHERE id= #{logId} AND alarm_status = #{oldAlarmStatus}        </update>        <select id="findLostJobIds" resultType="long" >                SELECT                        t.id                FROM                        xxl_job_log t                        LEFT JOIN xxl_job_registry t2 ON t.executor_address = t2.registry_value                WHERE                        t.trigger_code = 200                                AND t.handle_code = 0                                AND t.trigger_time <![CDATA[ <= ]]> #{losedTime}                                AND t2.id IS NULL        </select>        <!--        SELECT t.id        FROM xxl_job_log AS t        WHERE t.trigger_code = 200                and t.handle_code = 0                and t.trigger_time <![CDATA[ <= ]]> #{losedTime}                and t.executor_address not in (                        SELECT t2.registry_value                        FROM xxl_job_registry AS t2                )        --></mapper>
复制代码
3.3.5 XxlJobLogReportMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xxl.job.admin.dao.XxlJobLogReportDao">
  5.        
  6.         <resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" >
  7.                 <result column="id" property="id" />
  8.             <result column="trigger_day" property="triggerDay" />
  9.                 <result column="running_count" property="runningCount" />
  10.             <result column="suc_count" property="sucCount" />
  11.             <result column="fail_count" property="failCount" />
  12.         </resultMap>
  13.         <sql id="Base_Column_List">
  14.                 t.id,
  15.                 t.trigger_day,
  16.                 t.running_count,
  17.                 t.suc_count,
  18.                 t.fail_count
  19.         </sql>
  20.        
  21.         <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >
  22.                 INSERT INTO xxl_job_log_report (
  23.                         trigger_day,
  24.                         running_count,
  25.                         suc_count,
  26.                         fail_count
  27.                 ) VALUES (
  28.                         #{triggerDay},
  29.                         #{runningCount},
  30.                         #{sucCount},
  31.                         #{failCount}
  32.                 )
  33.                 <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
  34.                         SELECT LAST_INSERT_ID()
  35.                 </selectKey>-->
  36.         </insert>
  37.         <sql databaseId="oracle" id='XXL_JOB_LOG_REPORT_ID'>XXL_JOB_LOG_REPORT_SEQ_ID.NEXTVAL</sql>
  38.         <insert id="save" databaseId="oracle" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >
  39.                 <selectKey keyProperty="id" resultType="int" order="BEFORE">
  40.                         select <include refid="XXL_JOB_LOG_REPORT_ID" /> from dual
  41.                 </selectKey>
  42.                 INSERT INTO xxl_job_log_report (
  43.                 id,
  44.                 trigger_day,
  45.                 running_count,
  46.                 suc_count,
  47.                 fail_count
  48.                 ) VALUES (
  49.                 #{id},
  50.                 #{triggerDay,jdbcType=DATE},
  51.                 #{runningCount,jdbcType=NUMERIC},
  52.                 #{sucCount,jdbcType=NUMERIC},
  53.                 #{failCount,jdbcType=NUMERIC}
  54.                 )
  55.         </insert>
  56.         <update id="update" databaseId="oracle">
  57.         UPDATE xxl_job_log_report
  58.         SET running_count = #{runningCount,jdbcType=NUMERIC},
  59.                 suc_count = #{sucCount,jdbcType=NUMERIC},
  60.                 fail_count = #{failCount,jdbcType=NUMERIC}
  61.         WHERE trigger_day = #{triggerDay}
  62.     </update>
  63.         <update id="update" >
  64.         UPDATE xxl_job_log_report
  65.         SET running_count = #{runningCount},
  66.                 suc_count = #{sucCount},
  67.                 fail_count = #{failCount}
  68.         WHERE trigger_day = #{triggerDay}
  69.     </update>
  70.         <select id="queryLogReport" resultMap="XxlJobLogReport">
  71.                 SELECT <include refid="Base_Column_List" />
  72.                 FROM xxl_job_log_report t
  73.                 WHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}
  74.                 ORDER BY t.trigger_day ASC
  75.         </select>
  76.         <select id="queryLogReportTotal" resultMap="XxlJobLogReport">
  77.                 SELECT
  78.                         SUM(running_count) running_count,
  79.                         SUM(suc_count) suc_count,
  80.                         SUM(fail_count) fail_count
  81.                 FROM xxl_job_log_report t
  82.         </select>
  83. </mapper>
复制代码
3.3.6 XxlJobRegistryMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xxl.job.admin.dao.XxlJobRegistryDao">
  5.        
  6.         <resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core.model.XxlJobRegistry" >
  7.                 <result column="id" property="id" />
  8.             <result column="registry_group" property="registryGroup" />
  9.             <result column="registry_key" property="registryKey" />
  10.             <result column="registry_value" property="registryValue" />
  11.                 <result column="update_time" property="updateTime" />
  12.         </resultMap>
  13.         <sql id="Base_Column_List">
  14.                 t.id,
  15.                 t.registry_group,
  16.                 t.registry_key,
  17.                 t.registry_value,
  18.                 t.update_time
  19.         </sql>
  20.         <select id="findDead" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
  21.                 SELECT t.id
  22.                 FROM xxl_job_registry t
  23.                 WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
  24.         </select>
  25.         <select id="findDead" databaseId="sqlserver" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
  26.                 SELECT t.id
  27.                 FROM xxl_job_registry AS t
  28.                 WHERE t.update_time <![CDATA[ < ]]> DATEADD(ss, -#{timeout}, #{nowTime})
  29.         </select>
  30.         <select id="findDead" databaseId="kingbase" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
  31.                 SELECT t.id
  32.                 FROM xxl_job_registry t
  33.                 WHERE t.update_time <![CDATA[ < ]]> date '${nowTime}' - INTERVAL '${timeout} second'
  34.         </select>
  35.         <select id="findDead" databaseId="pg" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
  36.                 SELECT t.id
  37.                 FROM xxl_job_registry t
  38.                 WHERE t.update_time <![CDATA[ < ]]>  ((select NOW())-INTERVAL  &apos;  ${timeout} SEC &apos; )
  39.         </select>
  40.         <select id="findDead" databaseId="oracle" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
  41.                 SELECT t.id
  42.                 FROM xxl_job_registry t
  43.                 WHERE t.update_time <![CDATA[ < ]]> (#{nowTime} - numtodsinterval(#{timeout},'second'))
  44.         </select>
  45.         <select id="findDead" databaseId="dm" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
  46.                 SELECT t.id
  47.                 FROM xxl_job_registry t
  48.                 WHERE t.update_time <![CDATA[ < ]]> (#{nowTime} - numtodsinterval(#{timeout},'second'))
  49.         </select>
  50.        
  51.         <delete id="removeDead" parameterType="java.lang.Integer" >
  52.                 DELETE FROM xxl_job_registry
  53.                 WHERE id in
  54.                 <foreach collection="ids" item="item" open="(" close=")" separator="," >
  55.                         #{item}
  56.                 </foreach>
  57.         </delete>
  58.         <select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
  59.                 SELECT <include refid="Base_Column_List" />
  60.                 FROM xxl_job_registry t
  61.                 WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
  62.         </select>
  63.         <select id="findAll" databaseId="sqlserver" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
  64.                 SELECT <include refid="Base_Column_List" />
  65.                 FROM xxl_job_registry AS t
  66.                 WHERE t.update_time <![CDATA[ > ]]> DATEADD(ss, -#{timeout}, #{nowTime})
  67.         </select>
  68.         <select id="findAll" databaseId="kingbase" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
  69.                 SELECT <include refid="Base_Column_List" />
  70.                 FROM xxl_job_registry AS t
  71.                 WHERE t.update_time <![CDATA[ > ]]> date '${nowTime}' - INTERVAL '${timeout} second'
  72.         </select>
  73.         <select id="findAll" databaseId="pg" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
  74.                 SELECT <include refid="Base_Column_List" />
  75.                 FROM xxl_job_registry t
  76.                 WHERE t.update_time <![CDATA[ > ]]>  ((select NOW())-INTERVAL  &apos;  ${timeout} SEC &apos; )
  77.         </select>
  78.         <select id="findAll" databaseId="oracle" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
  79.                 SELECT <include refid="Base_Column_List" />
  80.                 FROM xxl_job_registry t
  81.                 WHERE t.update_time <![CDATA[ > ]]> (#{nowTime} - numtodsinterval(#{timeout},'second'))
  82.         </select>
  83.         <select id="findAll" databaseId="dm" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
  84.                 SELECT <include refid="Base_Column_List" />
  85.                 FROM xxl_job_registry t
  86.                 WHERE t.update_time <![CDATA[ > ]]> (#{nowTime} - numtodsinterval(#{timeout},'second'))
  87.         </select>
  88.     <update id="registryUpdate" >
  89.         UPDATE xxl_job_registry
  90.         SET update_time = #{updateTime}
  91.         WHERE registry_group = #{registryGroup}
  92.           AND registry_key = #{registryKey}
  93.           AND registry_value = #{registryValue}
  94.     </update>
  95.         <sql id='XXL_JOB_REGISTRY_ID'>XXL_JOB_REGISTRY_SEQ_ID.NEXTVAL</sql>
  96.     <insert id="registrySave" >
  97.         INSERT INTO xxl_job_registry( registry_group , registry_key , registry_value, update_time)
  98.         VALUES( #{registryGroup}  , #{registryKey} , #{registryValue}, #{updateTime})
  99.     </insert>
  100.         <insert id="registrySave" databaseId="oracle">
  101.                 <selectKey keyProperty="id" resultType="int" order="BEFORE">
  102.                         select <include refid="XXL_JOB_REGISTRY_ID" /> from dual
  103.                 </selectKey>
  104.                 INSERT INTO xxl_job_registry( id ,registry_group , registry_key , registry_value, update_time)
  105.                 VALUES( #{id}  , #{registryGroup}  , #{registryKey} , #{registryValue}, #{updateTime})
  106.         </insert>
  107.         <delete id="registryDelete" >
  108.                 DELETE FROM xxl_job_registry
  109.                 WHERE registry_group = #{registryGroup}
  110.                         AND registry_key = #{registryKey}
  111.                         AND registry_value = #{registryValue}
  112.         </delete>
  113. </mapper>
复制代码
3.3.7 XxlJobUserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.xxl.job.admin.dao.XxlJobUserDao">
  5.         <resultMap id="XxlJobUser" type="com.xxl.job.admin.core.model.XxlJobUser" >
  6.                 <result column="id" property="id" />
  7.                 <result column="username" property="username" />
  8.             <result column="password" property="password" />
  9.             <result column="role" property="role" />
  10.             <result column="permission" property="permission" />
  11.         </resultMap>
  12.         <sql id="Base_Column_List">
  13.                 t.id,
  14.                 t.username,
  15.                 t.password,
  16.                 t.role,
  17.                 t.permission
  18.         </sql>
  19.         <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobUser">
  20.                 SELECT <include refid="Base_Column_List" />
  21.                 FROM xxl_job_user t
  22.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  23.                         <if test="username != null and username != ''">
  24.                                 AND t.username like CONCAT(CONCAT('%', #{username}), '%')
  25.                         </if>
  26.                         <if test="role gt -1">
  27.                                 AND t.role = #{role}
  28.                         </if>
  29.                 </trim>
  30.                 ORDER BY username ASC
  31.                 LIMIT #{offset}, #{pagesize}
  32.         </select>
  33.         <select id="pageList" databaseId="sqlserver" parameterType="java.util.HashMap" resultMap="XxlJobUser">
  34.                 SELECT <include refid="Base_Column_List" />
  35.                 from (
  36.                 SELECT row_number () OVER ( ORDER BY username ASC ) AS rownumber,
  37.                 <include refid="Base_Column_List" />
  38.                 FROM xxl_job_user AS t
  39.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  40.                         <if test="username != null and username != ''">
  41.                                 AND t.username like CONCAT(CONCAT('%', #{username}), '%')
  42.                         </if>
  43.                         <if test="role gt -1">
  44.                                 AND t.role = #{role}
  45.                         </if>
  46.                 </trim>) AS t
  47.                 WHERE t.rownumber <![CDATA[ > ]]> #{offset}
  48.                 AND t.rownumber <![CDATA[ <= ]]> (#{offset} + #{pagesize})
  49.         </select>
  50.         <select id="pageList" databaseId="kingbase" parameterType="java.util.HashMap" resultMap="XxlJobUser">
  51.                 SELECT <include refid="Base_Column_List" />
  52.                 FROM xxl_job_user t
  53.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  54.                         <if test="username != null and username != ''">
  55.                                 AND t.username like CONCAT(CONCAT('%', #{username}), '%')
  56.                         </if>
  57.                         <if test="role gt -1">
  58.                                 AND t.role = #{role}
  59.                         </if>
  60.                 </trim>
  61.                 ORDER BY username ASC
  62.                 LIMIT #{pagesize} offset #{offset}
  63.         </select>
  64.         <select id="pageList" databaseId="pg" parameterType="java.util.HashMap" resultMap="XxlJobUser">
  65.                 SELECT <include refid="Base_Column_List" />
  66.                 FROM xxl_job_user t
  67.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  68.                         <if test="username != null and username != ''">
  69.                                 AND t.username like CONCAT(CONCAT('%', #{username}), '%')
  70.                         </if>
  71.                         <if test="role gt -1">
  72.                                 AND t.role = #{role}
  73.                         </if>
  74.                 </trim>
  75.                 ORDER BY username ASC
  76.                 LIMIT #{pagesize} offset #{offset}
  77.         </select>
  78.         <select id="pageList" databaseId="oracle" parameterType="java.util.HashMap" resultMap="XxlJobUser">
  79.                 SELECT <include refid="Base_Column_List" />, rownum
  80.                 FROM xxl_job_user t
  81.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  82.                         <if test="username != null and username != ''">
  83.                                 AND t.username like CONCAT(CONCAT('%', #{username}), '%')
  84.                         </if>
  85.                         <if test="role gt -1">
  86.                                 AND t.role = #{role}
  87.                         </if>
  88.                         AND rownum <![CDATA[ > ]]> #{offset} AND rownum <![CDATA[ < ]]> (#{offset} + #{pagesize} + 1)
  89.                 </trim>
  90.                 ORDER BY username ASC
  91.         </select>
  92.         <!--<select id="pageList" databaseId="dm" parameterType="java.util.HashMap" resultMap="XxlJobUser">-->
  93.                 <!--SELECT <include refid="Base_Column_List" />, rownum-->
  94.                 <!--FROM xxl_job_user t-->
  95.                 <!--<trim prefix="WHERE" prefixOverrides="AND | OR" >-->
  96.                         <!--<if test="username != null and username != ''">-->
  97.                                 <!--AND t.username like CONCAT(CONCAT('%', #{username}), '%')-->
  98.                         <!--</if>-->
  99.                         <!--<if test="role gt -1">-->
  100.                                 <!--AND t.role = #{role}-->
  101.                         <!--</if>-->
  102.                         <!--AND rownum <![CDATA[ > ]]> #{offset} AND rownum <![CDATA[ < ]]> (#{offset} + #{pagesize} + 1)-->
  103.                 <!--</trim>-->
  104.                 <!--ORDER BY username ASC-->
  105.                 <!--LIMIT #{offset}, #{pagesize}-->
  106.         <!--</select>-->
  107.         <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
  108.                 SELECT count(1)
  109.                 FROM xxl_job_user t
  110.                 <trim prefix="WHERE" prefixOverrides="AND | OR" >
  111.                         <if test="username != null and username != ''">
  112.                                 AND t.username like CONCAT(CONCAT('%', #{username}), '%')
  113.                         </if>
  114.                         <if test="role gt -1">
  115.                                 AND t.role = #{role}
  116.                         </if>
  117.                 </trim>
  118.         </select>
  119.         <select id="loadByUserName" parameterType="java.util.HashMap" resultMap="XxlJobUser">
  120.                 SELECT <include refid="Base_Column_List" />
  121.                 FROM xxl_job_user t
  122.                 WHERE t.username = #{username}
  123.         </select>
  124.         <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobUser" useGeneratedKeys="true" keyProperty="id" >
  125.                 INSERT INTO xxl_job_user (
  126.                         username,
  127.                         password,
  128.                         role,
  129.                         permission
  130.                 ) VALUES (
  131.                         #{username},
  132.                         #{password},
  133.                         #{role},
  134.                         #{permission}
  135.                 )
  136.         </insert>
  137.         <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobUser" >
  138.                 UPDATE xxl_job_user
  139.                 SET
  140.                         <if test="password != null and password != ''">
  141.                                 password = #{password},
  142.                         </if>
  143.                         role = #{role},
  144.                         permission = #{permission}
  145.                 WHERE id = #{id}
  146.         </update>
  147.         <delete id="delete" parameterType="java.util.HashMap">
  148.                 DELETE
  149.                 FROM xxl_job_user
  150.                 WHERE id = #{id}
  151.         </delete>
  152. </mapper>
复制代码
3.4 自界说DatabaseIdProvider

多数据库的适配主要是用了mybaties的databaseId来实现的,因此须要在项目里面临databaseId做自界说的映射配置
具体如下:
  1. package com.xxl.job.admin.core.conf;
  2. import org.apache.ibatis.mapping.DatabaseIdProvider;
  3. import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import java.util.Properties;
  7. /**
  8. * @Description TODO
  9. * @Author wx
  10. */
  11. @Configuration
  12. public class XxlJobDatabaseIdProvider {
  13.     @Bean
  14.     public DatabaseIdProvider databaseIdProvider() {
  15.         DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
  16.         Properties properties = new Properties();
  17.         properties.setProperty("Oracle", "oracle");
  18.         properties.setProperty("MySQL", "mysql");
  19.         properties.setProperty("DM DBMS", "dm");
  20.         properties.setProperty("DM", "dm");
  21.         properties.setProperty("PostgreSQL", "pg");
  22.         properties.setProperty("Zenith", "pg");
  23.         properties.setProperty("UXSQL", "pg");
  24.         properties.setProperty("SQL Server", "sqlserver");
  25.         properties.setProperty("Microsoft SQL Server", "sqlserver");
  26.         properties.setProperty("Kingbase", "kingbase");
  27.         properties.setProperty("KingbaseES", "kingbase");
  28.         properties.setProperty("GBase", "gbase");
  29.         databaseIdProvider.setProperties(properties);
  30.         return databaseIdProvider;
  31.     }
  32. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表