当前位置: 首页 > news >正文

xxl-job的pg数据库改造适配

   xxl-job原生是用mysql做的,公司现有项目用的是pg数据库,遂有了此文。

1.数据库初始化


-- ----------------------------
-- Sequence structure for xxl_job_group_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_group_id_seq";
CREATE SEQUENCE "xxl_job_group_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Sequence structure for xxl_job_info_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_info_id_seq";
CREATE SEQUENCE "xxl_job_info_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Sequence structure for xxl_job_log_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_log_id_seq";
CREATE SEQUENCE "xxl_job_log_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Sequence structure for xxl_job_log_report_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_log_report_id_seq";
CREATE SEQUENCE "xxl_job_log_report_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Sequence structure for xxl_job_logglue_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_logglue_id_seq";
CREATE SEQUENCE "xxl_job_logglue_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Sequence structure for xxl_job_registry_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_registry_id_seq";
CREATE SEQUENCE "xxl_job_registry_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Sequence structure for xxl_job_user_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job_user_id_seq";
CREATE SEQUENCE "xxl_job_user_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;-- ----------------------------
-- Table structure for xxl_job_group
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_group";
CREATE TABLE "xxl_job_group" ("id" int4 NOT NULL DEFAULT nextval('xxl_job_group_id_seq'::regclass),"app_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL,"title" varchar(12) COLLATE "pg_catalog"."default" NOT NULL,"address_type" int2 NOT NULL,"address_list" text COLLATE "pg_catalog"."default","update_time" timestamp(6)
)
;
COMMENT ON COLUMN "xxl_job_group"."app_name" IS '执行器AppName';
COMMENT ON COLUMN "xxl_job_group"."title" IS '执行器名称';
COMMENT ON COLUMN "xxl_job_group"."address_type" IS '执行器地址类型:0=自动注册、1=手动录入';
COMMENT ON COLUMN "xxl_job_group"."address_list" IS '执行器地址列表,多地址逗号分隔';-- ----------------------------
-- Records of xxl_job_group
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_group" VALUES (3, 'bankExcutor', 'bankExcutor', 1, 'http://127.0.0.1:8099', '2025-05-07 10:47:49.855');
COMMIT;-- ----------------------------
-- Table structure for xxl_job_info
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_info";
CREATE TABLE "xxl_job_info" ("id" int4 NOT NULL DEFAULT nextval('xxl_job_info_id_seq'::regclass),"job_group" int4 NOT NULL,"job_desc" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,"add_time" timestamp(6),"update_time" timestamp(6),"author" varchar(64) COLLATE "pg_catalog"."default","alarm_email" varchar(255) COLLATE "pg_catalog"."default","schedule_type" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"schedule_conf" varchar(128) COLLATE "pg_catalog"."default","misfire_strategy" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"executor_route_strategy" varchar(50) COLLATE "pg_catalog"."default","executor_handler" varchar(255) COLLATE "pg_catalog"."default","executor_param" varchar(512) COLLATE "pg_catalog"."default","executor_block_strategy" varchar(50) COLLATE "pg_catalog"."default","executor_timeout" int4 NOT NULL,"executor_fail_retry_count" int4 NOT NULL,"glue_type" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"glue_source" text COLLATE "pg_catalog"."default","glue_remark" varchar(128) COLLATE "pg_catalog"."default","glue_updatetime" timestamp(6),"child_jobid" varchar(255) COLLATE "pg_catalog"."default","trigger_status" int2 NOT NULL,"trigger_last_time" int8 NOT NULL,"trigger_next_time" int8 NOT NULL
)
;
COMMENT ON COLUMN "xxl_job_info"."job_group" IS '执行器主键ID';
COMMENT ON COLUMN "xxl_job_info"."author" IS '作者';
COMMENT ON COLUMN "xxl_job_info"."alarm_email" IS '报警邮件';
COMMENT ON COLUMN "xxl_job_info"."schedule_type" IS '调度类型';
COMMENT ON COLUMN "xxl_job_info"."schedule_conf" IS '调度配置,值含义取决于调度类型';
COMMENT ON COLUMN "xxl_job_info"."misfire_strategy" IS '调度过期策略';
COMMENT ON COLUMN "xxl_job_info"."executor_route_strategy" IS '执行器路由策略';
COMMENT ON COLUMN "xxl_job_info"."executor_handler" IS '执行器任务handler';
COMMENT ON COLUMN "xxl_job_info"."executor_param" IS '执行器任务参数';
COMMENT ON COLUMN "xxl_job_info"."executor_block_strategy" IS '阻塞处理策略';
COMMENT ON COLUMN "xxl_job_info"."executor_timeout" IS '任务执行超时时间,单位秒';
COMMENT ON COLUMN "xxl_job_info"."executor_fail_retry_count" IS '失败重试次数';
COMMENT ON COLUMN "xxl_job_info"."glue_type" IS 'GLUE类型';
COMMENT ON COLUMN "xxl_job_info"."glue_source" IS 'GLUE源代码';
COMMENT ON COLUMN "xxl_job_info"."glue_remark" IS 'GLUE备注';
COMMENT ON COLUMN "xxl_job_info"."glue_updatetime" IS 'GLUE更新时间';
COMMENT ON COLUMN "xxl_job_info"."child_jobid" IS '子任务ID,多个逗号分隔';
COMMENT ON COLUMN "xxl_job_info"."trigger_status" IS '调度状态:0-停止,1-运行';
COMMENT ON COLUMN "xxl_job_info"."trigger_last_time" IS '上次调度时间';
COMMENT ON COLUMN "xxl_job_info"."trigger_next_time" IS '下次调度时间';-- ----------------------------
-- Records of xxl_job_info
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_info" VALUES (2, 3, 'NC转CSV文件处理', '2025-05-07 10:25:22.967', '2025-05-07 10:31:26.038', 'dxy', '', 'CRON', '0 5 20 * * ?', 'DO_NOTHING', 'FIRST', 'nc2CsvJobHandler', '', 'SERIAL_EXECUTION', 0, 3, 'BEAN', '', 'GLUE代码初始化', '2025-05-07 10:25:22.967', '', 0, 0, 0);
INSERT INTO "xxl_job_info" VALUES (3, 3, 'NC转CSV增量处理', '2025-05-07 10:26:52.854', '2025-05-07 10:31:33.153', 'dxy', '', 'CRON', '0 0/30 * * * ?', 'DO_NOTHING', 'FIRST', 'nc2CsvIncrJobHandler', '', 'SERIAL_EXECUTION', 0, 3, 'BEAN', '', 'GLUE代码初始化', '2025-05-07 10:26:52.854', '', 0, 0, 0);
INSERT INTO "xxl_job_info" VALUES (1, 3, 'NC转SHP文件处理', '2025-05-07 10:24:25.096', '2025-05-07 10:31:39.834', 'dxy', '', 'CRON', '0 10 20 * * ?', 'DO_NOTHING', 'FIRST', 'nc2ShpJobHandler', '', 'SERIAL_EXECUTION', 0, 3, 'BEAN', '', 'GLUE代码初始化', '2025-05-07 10:24:25.096', '', 0, 0, 0);
COMMIT;-- ----------------------------
-- Table structure for xxl_job_lock
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_lock";
CREATE TABLE "xxl_job_lock" ("lock_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL
)
;
COMMENT ON COLUMN "xxl_job_lock"."lock_name" IS '锁名称';-- ----------------------------
-- Records of xxl_job_lock
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_lock" VALUES ('schedule_lock');
COMMIT;-- ----------------------------
-- Table structure for xxl_job_log
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_log";
CREATE TABLE "xxl_job_log" ("id" int8 NOT NULL DEFAULT nextval('xxl_job_log_id_seq'::regclass),"job_group" int4 NOT NULL,"job_id" int4 NOT NULL,"executor_address" varchar(255) COLLATE "pg_catalog"."default","executor_handler" varchar(255) COLLATE "pg_catalog"."default","executor_param" varchar(512) COLLATE "pg_catalog"."default","executor_sharding_param" varchar(20) COLLATE "pg_catalog"."default","executor_fail_retry_count" int4,"trigger_time" timestamp(6),"trigger_code" int4 NOT NULL,"trigger_msg" text COLLATE "pg_catalog"."default","handle_time" timestamp(6),"handle_code" int4 NOT NULL,"handle_msg" text COLLATE "pg_catalog"."default","alarm_status" int2
)
;
COMMENT ON COLUMN "xxl_job_log"."job_group" IS '执行器主键ID';
COMMENT ON COLUMN "xxl_job_log"."job_id" IS '任务,主键ID';
COMMENT ON COLUMN "xxl_job_log"."executor_address" IS '执行器地址,本次执行的地址';
COMMENT ON COLUMN "xxl_job_log"."executor_handler" IS '执行器任务handler';
COMMENT ON COLUMN "xxl_job_log"."executor_param" IS '执行器任务参数';
COMMENT ON COLUMN "xxl_job_log"."executor_sharding_param" IS '执行器任务分片参数,格式如 1/2';
COMMENT ON COLUMN "xxl_job_log"."executor_fail_retry_count" IS '失败重试次数';
COMMENT ON COLUMN "xxl_job_log"."trigger_time" IS '调度-时间';
COMMENT ON COLUMN "xxl_job_log"."trigger_code" IS '调度-结果';
COMMENT ON COLUMN "xxl_job_log"."trigger_msg" IS '调度-日志';
COMMENT ON COLUMN "xxl_job_log"."handle_time" IS '执行-时间';
COMMENT ON COLUMN "xxl_job_log"."handle_code" IS '执行-状态';
COMMENT ON COLUMN "xxl_job_log"."handle_msg" IS '执行-日志';
COMMENT ON COLUMN "xxl_job_log"."alarm_status" IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';-- ----------------------------
-- Records of xxl_job_log
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_log" VALUES (9, 3, 2, 'http://127.0.0.1:8099', 'nc2CsvJobHandler', '', NULL, 3, '2025-05-07 10:47:55.02', 200, '任务触发类型:手动触发<br>调度机器:10.6.13.215<br>执行器-注册方式:手动录入<br>执行器-地址列表:[http://127.0.0.1:8099]<br>路由策略:第一个<br>阻塞处理策略:单机串行<br>任务超时时间:0<br>失败重试次数:3<br><br><span style="color:#00c0ef;" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>触发调度:<br>address:http://127.0.0.1:8099<br>code:200<br>msg:null', '2025-05-07 10:47:56.989', 200, '', NULL);
INSERT INTO "xxl_job_log" VALUES (10, 3, 2, 'http://127.0.0.1:8099', 'nc2CsvJobHandler', '', NULL, 3, '2025-05-07 10:54:18.189', 200, '任务触发类型:手动触发<br>调度机器:10.6.13.215<br>执行器-注册方式:手动录入<br>执行器-地址列表:[http://127.0.0.1:8099]<br>路由策略:第一个<br>阻塞处理策略:单机串行<br>任务超时时间:0<br>失败重试次数:3<br><br><span style="color:#00c0ef;" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>触发调度:<br>address:http://127.0.0.1:8099<br>code:200<br>msg:null', NULL, 0, NULL, NULL);
INSERT INTO "xxl_job_log" VALUES (11, 3, 1, 'http://127.0.0.1:8099', 'nc2ShpJobHandler', '', NULL, 3, '2025-05-07 10:58:29.205', 200, '任务触发类型:手动触发<br>调度机器:10.6.13.215<br>执行器-注册方式:手动录入<br>执行器-地址列表:[http://127.0.0.1:8099]<br>路由策略:第一个<br>阻塞处理策略:单机串行<br>任务超时时间:0<br>失败重试次数:3<br><br><span style="color:#00c0ef;" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>触发调度:<br>address:http://127.0.0.1:8099<br>code:200<br>msg:null', NULL, 0, NULL, NULL);
COMMIT;-- ----------------------------
-- Table structure for xxl_job_log_report
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_log_report";
CREATE TABLE "xxl_job_log_report" ("id" int4 NOT NULL DEFAULT nextval('xxl_job_log_report_id_seq'::regclass),"trigger_day" timestamp(6),"running_count" int4 NOT NULL,"suc_count" int4 NOT NULL,"fail_count" int4 NOT NULL,"update_time" timestamp(6)
)
;
COMMENT ON COLUMN "xxl_job_log_report"."trigger_day" IS '调度-时间';
COMMENT ON COLUMN "xxl_job_log_report"."running_count" IS '运行中-日志数量';
COMMENT ON COLUMN "xxl_job_log_report"."suc_count" IS '执行成功-日志数量';
COMMENT ON COLUMN "xxl_job_log_report"."fail_count" IS '执行失败-日志数量';-- ----------------------------
-- Records of xxl_job_log_report
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_log_report" VALUES (1, '2025-05-07 00:00:00', 0, 0, 0, NULL);
INSERT INTO "xxl_job_log_report" VALUES (2, '2025-05-06 00:00:00', 0, 0, 0, NULL);
INSERT INTO "xxl_job_log_report" VALUES (3, '2025-05-05 00:00:00', 0, 0, 0, NULL);
COMMIT;-- ----------------------------
-- Table structure for xxl_job_logglue
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_logglue";
CREATE TABLE "xxl_job_logglue" ("id" int4 NOT NULL DEFAULT nextval('xxl_job_logglue_id_seq'::regclass),"job_id" int4 NOT NULL,"glue_type" varchar(50) COLLATE "pg_catalog"."default","glue_source" text COLLATE "pg_catalog"."default","glue_remark" varchar(128) COLLATE "pg_catalog"."default" NOT NULL,"add_time" timestamp(6),"update_time" timestamp(6)
)
;
COMMENT ON COLUMN "xxl_job_logglue"."job_id" IS '任务,主键ID';
COMMENT ON COLUMN "xxl_job_logglue"."glue_type" IS 'GLUE类型';
COMMENT ON COLUMN "xxl_job_logglue"."glue_source" IS 'GLUE源代码';
COMMENT ON COLUMN "xxl_job_logglue"."glue_remark" IS 'GLUE备注';-- ----------------------------
-- Table structure for xxl_job_registry
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_registry";
CREATE TABLE "xxl_job_registry" ("id" int4 NOT NULL DEFAULT nextval('xxl_job_registry_id_seq'::regclass),"registry_group" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"registry_key" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,"registry_value" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,"update_time" timestamp(6)
)
;-- ----------------------------
-- Records of xxl_job_registry
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_registry" VALUES (104, 'EXECUTOR', 'xxl-job-executor', 'http://127.0.0.1:8099', '2025-05-07 10:45:10.846');
INSERT INTO "xxl_job_registry" VALUES (124, 'EXECUTOR', 'xxl-job-executor', '127.0.0.1:8099', '2025-05-07 11:23:18.005');
COMMIT;-- ----------------------------
-- Table structure for xxl_job_user
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job_user";
CREATE TABLE "xxl_job_user" ("id" int4 NOT NULL DEFAULT nextval('xxl_job_user_id_seq'::regclass),"username" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"password" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"role" int2 NOT NULL,"permission" varchar(255) COLLATE "pg_catalog"."default"
)
;
COMMENT ON COLUMN "xxl_job_user"."username" IS '账号';
COMMENT ON COLUMN "xxl_job_user"."password" IS '密码';
COMMENT ON COLUMN "xxl_job_user"."role" IS '角色:0-普通用户、1-管理员';
COMMENT ON COLUMN "xxl_job_user"."permission" IS '权限:执行器ID列表,多个逗号分割';-- ----------------------------
-- Records of xxl_job_user
-- ----------------------------
BEGIN;
INSERT INTO "xxl_job_user" VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
COMMIT;-- ----------------------------
-- Alter sequences owned by
-- ----------------------------
SELECT setval('"xxl_job_group_id_seq"', 4, true);
SELECT setval('"xxl_job_info_id_seq"', 5, true);
SELECT setval('"xxl_job_log_id_seq"', 12, true);
SELECT setval('"xxl_job_log_report_id_seq"', 4, true);
SELECT setval('"xxl_job_logglue_id_seq"', 2, false);
SELECT setval('"xxl_job_registry_id_seq"', 185, true);
SELECT setval('"xxl_job_user_id_seq"', 2, false);-- ----------------------------
-- Primary Key structure for table xxl_job_group
-- ----------------------------
ALTER TABLE "xxl_job_group" ADD CONSTRAINT "xxl_job_group_pkey" PRIMARY KEY ("id");-- ----------------------------
-- Primary Key structure for table xxl_job_info
-- ----------------------------
ALTER TABLE "xxl_job_info" ADD CONSTRAINT "xxl_job_info_pkey" PRIMARY KEY ("id");-- ----------------------------
-- Primary Key structure for table xxl_job_lock
-- ----------------------------
ALTER TABLE "xxl_job_lock" ADD CONSTRAINT "xxl_job_lock_pkey" PRIMARY KEY ("lock_name");-- ----------------------------
-- Indexes structure for table xxl_job_log
-- ----------------------------
CREATE INDEX "I_handle_code" ON "xxl_job_log" USING btree ("handle_code" "pg_catalog"."int4_ops" ASC NULLS LAST
);
CREATE INDEX "I_job_id" ON "xxl_job_log" USING btree ("job_id" "pg_catalog"."int4_ops" ASC NULLS LAST
);
CREATE INDEX "I_jobid_jobgroup" ON "xxl_job_log" USING btree ("job_id" "pg_catalog"."int4_ops" ASC NULLS LAST,"job_group" "pg_catalog"."int4_ops" ASC NULLS LAST
);
CREATE INDEX "I_trigger_time" ON "xxl_job_log" USING btree ("trigger_time" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);-- ----------------------------
-- Primary Key structure for table xxl_job_log
-- ----------------------------
ALTER TABLE "xxl_job_log" ADD CONSTRAINT "xxl_job_log_pkey" PRIMARY KEY ("id");-- ----------------------------
-- Indexes structure for table xxl_job_log_report
-- ----------------------------
CREATE INDEX "i_trigger_day" ON "xxl_job_log_report" USING btree ("trigger_day" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);-- ----------------------------
-- Primary Key structure for table xxl_job_log_report
-- ----------------------------
ALTER TABLE "xxl_job_log_report" ADD CONSTRAINT "xxl_job_log_report_pkey" PRIMARY KEY ("id");-- ----------------------------
-- Primary Key structure for table xxl_job_logglue
-- ----------------------------
ALTER TABLE "xxl_job_logglue" ADD CONSTRAINT "xxl_job_logglue_pkey" PRIMARY KEY ("id");-- ----------------------------
-- Indexes structure for table xxl_job_registry
-- ----------------------------
CREATE INDEX "i_g_k_v" ON "xxl_job_registry" USING btree ("registry_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,"registry_key" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,"registry_value" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE UNIQUE INDEX "idx_registry_group_key_value" ON "xxl_job_registry" USING btree ("registry_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,"registry_key" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,"registry_value" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);-- ----------------------------
-- Primary Key structure for table xxl_job_registry
-- ----------------------------
ALTER TABLE "xxl_job_registry" ADD CONSTRAINT "xxl_job_registry_pkey" PRIMARY KEY ("id");-- ----------------------------
-- Indexes structure for table xxl_job_user
-- ----------------------------
CREATE INDEX "i_username" ON "xxl_job_user" USING btree ("username" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);-- ----------------------------
-- Primary Key structure for table xxl_job_user
-- ----------------------------
ALTER TABLE "xxl_job_user" ADD CONSTRAINT "xxl_job_user_pkey" PRIMARY KEY ("id");

2.jobAdmin中的mapper修改:

mybatis.mapper-locations=classpath:/postgresql/*Mapper.xml
mybatis.executor-type=batch

每个mapper如下:

XxlJobGroupMapper.xml:

<?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.XxlJobGroupDao"><resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" ><result column="id" property="id" /><result column="app_name" property="appname" /><result column="title" property="title" /><result column="address_type" property="addressType" /><result column="address_list" property="addressList" /><result column="update_time" property="updateTime" /></resultMap><sql id="Base_Column_List">t.id,t.app_name,t.title,t.address_type,t.address_list,t.update_time</sql><select id="findAll" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tORDER BY t.app_name, t.title, t.id ASC</select><select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tWHERE t.address_type = #{addressType}ORDER BY t.app_name, t.title, t.id ASC</select><insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >INSERT INTO xxl_job_group (  app_name ,  title ,  address_type ,  address_list ,  update_time )values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} );</insert><update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >UPDATE xxl_job_groupSET  app_name  = #{appname},title  = #{title},address_type  = #{addressType},address_list  = #{addressList},update_time  = #{updateTime}WHERE id = #{id}</update><delete id="remove" parameterType="java.lang.Integer" >DELETE FROM xxl_job_groupWHERE id = #{id}</delete><select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tWHERE t.id = #{id}</select><select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS t<trim prefix="WHERE" prefixOverrides="AND | OR" ><if test="appname != null and appname != ''">AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')</if><if test="title != null and title != ''">AND t.title like CONCAT(CONCAT('%', #{title}), '%')</if></trim>ORDER BY t.app_name, t.title, t.id ASCLIMIT #{pagesize} OFFSET #{offset}</select><select id="pageListCount" parameterType="java.util.HashMap" resultType="int">SELECT count(1)FROM xxl_job_group AS t<trim prefix="WHERE" prefixOverrides="AND | OR" ><if test="appname != null and appname != ''">AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')</if><if test="title != null and title != ''">AND t.title like CONCAT(CONCAT('%', #{title}), '%')</if></trim></select></mapper>

XxlJobInfoMapper.xml:

<?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.XxlJobGroupDao"><resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" ><result column="id" property="id" /><result column="app_name" property="appname" /><result column="title" property="title" /><result column="address_type" property="addressType" /><result column="address_list" property="addressList" /><result column="update_time" property="updateTime" /></resultMap><sql id="Base_Column_List">t.id,t.app_name,t.title,t.address_type,t.address_list,t.update_time</sql><select id="findAll" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tORDER BY t.app_name, t.title, t.id ASC</select><select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tWHERE t.address_type = #{addressType}ORDER BY t.app_name, t.title, t.id ASC</select><insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >INSERT INTO xxl_job_group (  app_name ,  title ,  address_type ,  address_list ,  update_time )values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} );</insert><update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >UPDATE xxl_job_groupSET  app_name  = #{appname},title  = #{title},address_type  = #{addressType},address_list  = #{addressList},update_time  = #{updateTime}WHERE id = #{id}</update><delete id="remove" parameterType="java.lang.Integer" >DELETE FROM xxl_job_groupWHERE id = #{id}</delete><select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tWHERE t.id = #{id}</select><select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS t<trim prefix="WHERE" prefixOverrides="AND | OR" ><if test="appname != null and appname != ''">AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')</if><if test="title != null and title != ''">AND t.title like CONCAT(CONCAT('%', #{title}), '%')</if></trim>ORDER BY t.app_name, t.title, t.id ASCLIMIT #{pagesize} OFFSET #{offset}</select><select id="pageListCount" parameterType="java.util.HashMap" resultType="int">SELECT count(1)FROM xxl_job_group AS t<trim prefix="WHERE" prefixOverrides="AND | OR" ><if test="appname != null and appname != ''">AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')</if><if test="title != null and title != ''">AND t.title like CONCAT(CONCAT('%', #{title}), '%')</if></trim></select></mapper>

XxlJobLogGlueMapper.xml:

<?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.XxlJobGroupDao"><resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" ><result column="id" property="id" /><result column="app_name" property="appname" /><result column="title" property="title" /><result column="address_type" property="addressType" /><result column="address_list" property="addressList" /><result column="update_time" property="updateTime" /></resultMap><sql id="Base_Column_List">t.id,t.app_name,t.title,t.address_type,t.address_list,t.update_time</sql><select id="findAll" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tORDER BY t.app_name, t.title, t.id ASC</select><select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tWHERE t.address_type = #{addressType}ORDER BY t.app_name, t.title, t.id ASC</select><insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >INSERT INTO xxl_job_group (  app_name ,  title ,  address_type ,  address_list ,  update_time )values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} );</insert><update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >UPDATE xxl_job_groupSET  app_name  = #{appname},title  = #{title},address_type  = #{addressType},address_list  = #{addressList},update_time  = #{updateTime}WHERE id = #{id}</update><delete id="remove" parameterType="java.lang.Integer" >DELETE FROM xxl_job_groupWHERE id = #{id}</delete><select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS tWHERE t.id = #{id}</select><select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobGroup">SELECT <include refid="Base_Column_List" />FROM xxl_job_group AS t<trim prefix="WHERE" prefixOverrides="AND | OR" ><if test="appname != null and appname != ''">AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')</if><if test="title != null and title != ''">AND t.title like CONCAT(CONCAT('%', #{title}), '%')</if></trim>ORDER BY t.app_name, t.title, t.id ASCLIMIT #{pagesize} OFFSET #{offset}</select><select id="pageListCount" parameterType="java.util.HashMap" resultType="int">SELECT count(1)FROM xxl_job_group AS t<trim prefix="WHERE" prefixOverrides="AND | OR" ><if test="appname != null and appname != ''">AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')</if><if test="title != null and title != ''">AND t.title like CONCAT(CONCAT('%', #{title}), '%')</if></trim></select></mapper>

XxlJobLogMapper.xml:

<?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 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) ORt.handle_code NOT IN (0, 200))</if><if test="logStatus == 3" >AND t.trigger_code = 200AND t.handle_code = 0</if></trim>ORDER BY t.trigger_time DESCLIMIT #{pagesize} OFFSET #{offset}</select><select id="pageListCount" resultType="int">SELECT count(1)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) ORt.handle_code NOT IN (0, 200))</if><if test="logStatus == 3" >AND t.trigger_code = 200AND 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 AS tWHERE t.id = #{id}</select><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><update id="updateTriggerInfo" >UPDATE xxl_job_logSETtrigger_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="updateHandleInfo">UPDATE xxl_job_logSET handle_time = #{handleTime},handle_code = #{handleCode},handle_msg = #{handleMsg}WHERE  id = #{id}</update><delete id="delete" >delete from xxl_job_logWHERE job_id = #{jobId}</delete><!--<select id="triggerCountByDay" resultType="java.util.Map" >SELECTDATE_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 triggerDayCountSucFROM xxl_job_logWHERE trigger_time BETWEEN #{from} and #{to}GROUP BY triggerDayORDER BY triggerDay</select>--><select id="findLogReport" resultType="java.util.Map" >SELECTCOUNT(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  triggerDayCountSucFROM xxl_job_logWHERE 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 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 descLIMIT #{clearBeforeNum} OFFSET 0) t1)</if></trim>order by id ascLIMIT #{pagesize}</select><delete id="clearLog" >delete from xxl_job_logWHERE id in<foreach collection="logIds" item="item" open="(" close=")" separator="," >#{item}</foreach></delete><select id="findFailJobLogIds" resultType="long" >SELECT id FROM  xxl_job_logWHERE not ((trigger_code in (0, 200) and handle_code = 0)OR(handle_code = 200))AND  alarm_status  = 0ORDER BY id ASCLIMIT #{pagesize}</select><update id="updateAlarmStatus" >UPDATE xxl_job_logSETalarm_status  = #{newAlarmStatus}WHERE  id = #{logId} AND  alarm_status  = #{oldAlarmStatus}</update><select id="findLostJobIds" resultType="long" >SELECTt.idFROMxxl_job_log tLEFT JOIN xxl_job_registry t2 ON t.executor_address = t2.registry_valueWHEREt.trigger_code = 200AND t.handle_code = 0AND t.trigger_time <![CDATA[ <= ]]> #{losedTime}AND t2.id IS NULL;</select><!--SELECT t.idFROM xxl_job_log AS tWHERE t.trigger_code = 200and t.handle_code = 0and t.trigger_time <![CDATA[ <= ]]> #{losedTime}and t.executor_address not in (SELECT t2.registry_valueFROM xxl_job_registry AS t2)--></mapper>

XxlJobLogReportMapper.xml:

<?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.XxlJobLogReportDao"><resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" ><result column="id" property="id" /><result column="trigger_day" property="triggerDay" /><result column="running_count" property="runningCount" /><result column="suc_count" property="sucCount" /><result column="fail_count" property="failCount" /></resultMap><sql id="Base_Column_List">t.id,t.trigger_day,t.running_count,t.suc_count,t.fail_count</sql><insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >INSERT INTO xxl_job_log_report (trigger_day ,running_count ,suc_count ,fail_count) VALUES (#{triggerDay},#{runningCount},#{sucCount},#{failCount});<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">SELECT LAST_INSERT_ID() </selectKey>--></insert><update id="update" >UPDATE xxl_job_log_reportSET  running_count  = #{runningCount},suc_count  = #{sucCount},fail_count  = #{failCount}WHERE  trigger_day  = #{triggerDay}</update><select id="queryLogReport" resultMap="XxlJobLogReport">SELECT <include refid="Base_Column_List" />FROM xxl_job_log_report AS tWHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}ORDER BY t.trigger_day ASC</select><select id="queryLogReportTotal" resultMap="XxlJobLogReport">SELECTSUM(running_count) running_count,SUM(suc_count) suc_count,SUM(fail_count) fail_countFROM xxl_job_log_report AS t</select></mapper>

XxlJobRegistryMapper.xml:

<?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.XxlJobLogReportDao"><resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" ><result column="id" property="id" /><result column="trigger_day" property="triggerDay" /><result column="running_count" property="runningCount" /><result column="suc_count" property="sucCount" /><result column="fail_count" property="failCount" /></resultMap><sql id="Base_Column_List">t.id,t.trigger_day,t.running_count,t.suc_count,t.fail_count</sql><insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >INSERT INTO xxl_job_log_report (trigger_day ,running_count ,suc_count ,fail_count) VALUES (#{triggerDay},#{runningCount},#{sucCount},#{failCount});<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">SELECT LAST_INSERT_ID() </selectKey>--></insert><update id="update" >UPDATE xxl_job_log_reportSET  running_count  = #{runningCount},suc_count  = #{sucCount},fail_count  = #{failCount}WHERE  trigger_day  = #{triggerDay}</update><select id="queryLogReport" resultMap="XxlJobLogReport">SELECT <include refid="Base_Column_List" />FROM xxl_job_log_report AS tWHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}ORDER BY t.trigger_day ASC</select><select id="queryLogReportTotal" resultMap="XxlJobLogReport">SELECTSUM(running_count) running_count,SUM(suc_count) suc_count,SUM(fail_count) fail_countFROM xxl_job_log_report AS t</select></mapper>

XxlJobUserMapper.xml:

<?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.XxlJobLogReportDao"><resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" ><result column="id" property="id" /><result column="trigger_day" property="triggerDay" /><result column="running_count" property="runningCount" /><result column="suc_count" property="sucCount" /><result column="fail_count" property="failCount" /></resultMap><sql id="Base_Column_List">t.id,t.trigger_day,t.running_count,t.suc_count,t.fail_count</sql><insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >INSERT INTO xxl_job_log_report (trigger_day ,running_count ,suc_count ,fail_count) VALUES (#{triggerDay},#{runningCount},#{sucCount},#{failCount});<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">SELECT LAST_INSERT_ID() </selectKey>--></insert><update id="update" >UPDATE xxl_job_log_reportSET  running_count  = #{runningCount},suc_count  = #{sucCount},fail_count  = #{failCount}WHERE  trigger_day  = #{triggerDay}</update><select id="queryLogReport" resultMap="XxlJobLogReport">SELECT <include refid="Base_Column_List" />FROM xxl_job_log_report AS tWHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}ORDER BY t.trigger_day ASC</select><select id="queryLogReportTotal" resultMap="XxlJobLogReport">SELECTSUM(running_count) running_count,SUM(suc_count) suc_count,SUM(fail_count) fail_countFROM xxl_job_log_report AS t</select></mapper>

3.启动jobAdmin:

我们公司用的数据库为postgis/postgis:9.6-3.1,目前看着使用没有啥问题

相关文章:

  • 【一】浏览器的copy as fetch和copy as bash的区别
  • Android kernel日志中healthd关键词意义
  • 【linux常用命令】处理失效链接
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.4 可视化报告输出
  • 全球首款无限时长电影生成模型SkyReels-V2本地部署教程:视频时长无限制!
  • js原型污染 + xss劫持base -- no-code b01lersctf 2025
  • 单片机-STM32部分:9-1、触控检测芯片
  • LVGL的核心:lv_timer_handler
  • Vue3 el-tree:全选时只返回父节点,半选只返回勾选中的节点(省-市区-县-镇-乡-村-街道)
  • Python代码编程基础
  • 创始人IP的重塑与破局|创客匠人热点评述
  • webpack代理天地图瓦片
  • 创始人 IP 的破局之道:从技术突围到生态重构的时代启示|创客匠人评述
  • 英文单词 do、play、go 的区别
  • 【LangChain全栈开发指南】从LLM集成到智能体系统构建
  • 安全核查基线-2.nfslock服务
  • 企业高性能WEB服务器—Nginx
  • golang -- 如何获取变量类型
  • ISP流程介绍(Raw格式阶段)
  • 《Vuejs设计与实现》第 5 章(非原始值响应式方案) 上
  • 解放军仪仗分队参加白俄罗斯纪念苏联伟大卫国战争胜利80周年阅兵活动
  • 湖北宜昌:在青山绿水间解锁乡村振兴“密码”
  • 匈牙利外长称匈方已驱逐两名乌克兰外交官
  • 报告:4月份新增发行的1763亿元专项债中,投向房地产相关领域约717亿元
  • 东亚社会的“苦难诗学”:从《苦尽柑来遇见你》说起
  • 美联储宣布维持基准利率不变