增加了对postgresql数据库的支持

pull/10/head
fengj 6 years ago
parent 6b55ad18b3
commit 517c3d6766

@ -0,0 +1,327 @@
create SCHEMA xxl_job;
-- ----------------------------
-- Sequence structure for xxl_job_group_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job"."xxl_job_group_id_seq";
CREATE SEQUENCE "xxl_job"."xxl_job_group_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1;
-- ----------------------------
-- Sequence structure for xxl_job_info_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job"."xxl_job_info_id_seq";
CREATE SEQUENCE "xxl_job"."xxl_job_info_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1;
-- ----------------------------
-- Sequence structure for xxl_job_log_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job"."xxl_job_log_id_seq";
CREATE SEQUENCE "xxl_job"."xxl_job_log_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"."xxl_job_logglue_id_seq";
CREATE SEQUENCE "xxl_job"."xxl_job_logglue_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1;
-- ----------------------------
-- Sequence structure for xxl_job_registry_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job"."xxl_job_registry_id_seq";
CREATE SEQUENCE "xxl_job"."xxl_job_registry_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1;
-- ----------------------------
-- Sequence structure for xxl_job_user_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "xxl_job"."xxl_job_user_id_seq";
CREATE SEQUENCE "xxl_job"."xxl_job_user_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1;
-- ----------------------------
-- Table structure for xxl_job_group
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_group";
CREATE TABLE "xxl_job"."xxl_job_group" (
"id" int4 NOT NULL DEFAULT nextval('"xxl_job".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,
"order" int4 DEFAULT 0 NOT NULL,
"address_type" int2 DEFAULT 0 NOT NULL,
"address_list" varchar(512) COLLATE "pg_catalog"."default"
)
;
COMMENT ON COLUMN "xxl_job"."xxl_job_group"."app_name" IS '执行器AppName';
COMMENT ON COLUMN "xxl_job"."xxl_job_group"."title" IS '执行器名称';
COMMENT ON COLUMN "xxl_job"."xxl_job_group"."order" IS '排序';
COMMENT ON COLUMN "xxl_job"."xxl_job_group"."address_type" IS '执行器地址类型0=自动注册、1=手动录入';
COMMENT ON COLUMN "xxl_job"."xxl_job_group"."address_list" IS '执行器地址列表,多地址逗号分隔';
-- ----------------------------
-- Table structure for xxl_job_info
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_info";
CREATE TABLE "xxl_job"."xxl_job_info" (
"id" int4 NOT NULL DEFAULT nextval('"xxl_job".xxl_job_info_id_seq'::regclass),
"job_group" int4 NOT NULL,
"job_cron" varchar(128) COLLATE "pg_catalog"."default" 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",
"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 DEFAULT 0 NOT NULL,
"executor_fail_retry_count" int4 DEFAULT 0 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 DEFAULT 0 NOT NULL,
"trigger_last_time" int8 DEFAULT 0 NOT NULL,
"trigger_next_time" int8 DEFAULT 0 NOT NULL
)
;
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."job_group" IS '执行器主键ID';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."job_cron" IS '任务执行CRON';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."author" IS '作者';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."alarm_email" IS '报警邮件';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."executor_route_strategy" IS '执行器路由策略';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."executor_handler" IS '执行器任务handler';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."executor_param" IS '执行器任务参数';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."executor_block_strategy" IS '阻塞处理策略';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."executor_timeout" IS '任务执行超时时间,单位秒';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."executor_fail_retry_count" IS '失败重试次数';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."glue_type" IS 'GLUE类型';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."glue_source" IS 'GLUE源代码';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."glue_remark" IS 'GLUE备注';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."glue_updatetime" IS 'GLUE更新时间';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."child_jobid" IS '子任务ID多个逗号分隔';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."trigger_status" IS '调度状态0-停止1-运行';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."trigger_last_time" IS '上次调度时间';
COMMENT ON COLUMN "xxl_job"."xxl_job_info"."trigger_next_time" IS '下次调度时间';
-- Table structure for xxl_job_lock
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_lock";
CREATE TABLE "xxl_job"."xxl_job_lock" (
"lock_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL
)
;
COMMENT ON COLUMN "xxl_job"."xxl_job_lock"."lock_name" IS '锁名称';
-- ----------------------------
-- Table structure for xxl_job_log
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_log";
CREATE TABLE "xxl_job"."xxl_job_log" (
"id" int8 NOT NULL DEFAULT nextval('"xxl_job".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 DEFAULT 0 NOT NULL,
"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 DEFAULT 0 NOT NULL
)
;
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."job_group" IS '执行器主键ID';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."job_id" IS '任务主键ID';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."executor_address" IS '执行器地址,本次执行的地址';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."executor_handler" IS '执行器任务handler';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."executor_param" IS '执行器任务参数';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."executor_sharding_param" IS '执行器任务分片参数,格式如 1/2';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."executor_fail_retry_count" IS '失败重试次数';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."trigger_time" IS '调度-时间';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."trigger_code" IS '调度-结果';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."trigger_msg" IS '调度-日志';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."handle_time" IS '执行-时间';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."handle_code" IS '执行-状态';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."handle_msg" IS '执行-日志';
COMMENT ON COLUMN "xxl_job"."xxl_job_log"."alarm_status" IS '告警状态0-默认、1-无需告警、2-告警成功、3-告警失败';
-- ----------------------------
-- Table structure for xxl_job_logglue
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_logglue";
CREATE TABLE "xxl_job"."xxl_job_logglue" (
"id" int4 NOT NULL DEFAULT nextval('"xxl_job".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"."xxl_job_logglue"."job_id" IS '任务主键ID';
COMMENT ON COLUMN "xxl_job"."xxl_job_logglue"."glue_type" IS 'GLUE类型';
COMMENT ON COLUMN "xxl_job"."xxl_job_logglue"."glue_source" IS 'GLUE源代码';
COMMENT ON COLUMN "xxl_job"."xxl_job_logglue"."glue_remark" IS 'GLUE备注';
-- 创建自动更新 update_time 字段的触发器及对应function
CREATE FUNCTION "xxl_job".update_timestamp() RETURNS trigger AS $update_timestamp$
BEGIN
NEW.update_time := now();
RETURN NEW;
END;
$update_timestamp$ LANGUAGE plpgsql;
CREATE TRIGGER update_timestamp BEFORE UPDATE ON "xxl_job"."xxl_job_logglue"
FOR EACH ROW EXECUTE PROCEDURE "xxl_job".update_timestamp();
-- ----------------------------
-- Table structure for xxl_job_registry
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_registry";
CREATE TABLE "xxl_job"."xxl_job_registry" (
"id" int4 NOT NULL DEFAULT nextval('"xxl_job".xxl_job_registry_id_seq'::regclass),
"registry_group" varchar(255) 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) DEFAULT NOW() NOT NULL
)
;
-- ----------------------------
-- Table structure for xxl_job_user
-- ----------------------------
DROP TABLE IF EXISTS "xxl_job"."xxl_job_user";
CREATE TABLE "xxl_job"."xxl_job_user" (
"id" int4 NOT NULL DEFAULT nextval('"xxl_job".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"."xxl_job_user"."username" IS '账号';
COMMENT ON COLUMN "xxl_job"."xxl_job_user"."password" IS '密码';
COMMENT ON COLUMN "xxl_job"."xxl_job_user"."role" IS '角色0-普通用户、1-管理员';
COMMENT ON COLUMN "xxl_job"."xxl_job_user"."permission" IS '权限执行器ID列表多个逗号分割';
-- ----------------------------
-- Primary Key structure for table xxl_job_group
-- ----------------------------
ALTER TABLE "xxl_job"."xxl_job_group" ADD CONSTRAINT "xxl_job_group_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table xxl_job_info
-- ----------------------------
ALTER TABLE "xxl_job"."xxl_job_info" ADD CONSTRAINT "xxl_job_info_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table xxl_job_lock
-- ----------------------------
ALTER TABLE "xxl_job"."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"."xxl_job_log" USING btree (
"handle_code" "pg_catalog"."int4_ops" ASC NULLS LAST
);
CREATE INDEX "I_trigger_time" ON "xxl_job"."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"."xxl_job_log" ADD CONSTRAINT "xxl_job_log_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table xxl_job_logglue
-- ----------------------------
ALTER TABLE "xxl_job"."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"."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"."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"."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"."xxl_job_user" ADD CONSTRAINT "xxl_job_user_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Records of xxl_job_user
-- ----------------------------
INSERT INTO "xxl_job"."xxl_job_user" ("username", "password", "role") VALUES ('admin', 'e10adc3949ba59abbe56e057f20f883e', 1);
-- ----------------------------
-- Records of xxl_job_group
-- ----------------------------
INSERT INTO "xxl_job"."xxl_job_group" ("app_name", "title", "order", "address_type") VALUES ('xxl_job-executor-sample', '示例执行器', 1, 0);
-- ----------------------------
-- Records of xxl_job_info
-- ----------------------------
INSERT INTO "xxl_job"."xxl_job_info" ("job_group","job_cron","job_desc","add_time","update_time","author","alarm_email","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, '0 0 0 * * ? *', '测试任务1', now(), now(), 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', now(), '');
-- ----------------------------
-- Records of xxl_job_lock
-- ----------------------------
INSERT INTO "xxl_job"."xxl_job_lock" VALUES ('schedule_lock');
-- ----------------------------

@ -30,6 +30,7 @@
<spring-boot.version>1.5.21.RELEASE</spring-boot.version>
<mybatis-spring-boot-starter.version>1.3.4</mybatis-spring-boot-starter.version>
<mysql-connector-java.version>5.1.47</mysql-connector-java.version>
<postgresql-jdbc-driver.version>42.2.1.jre7</postgresql-jdbc-driver.version>
<slf4j-api.version>1.7.26</slf4j-api.version>
<junit.version>4.12</junit.version>

@ -59,6 +59,12 @@
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.1.jre7</version>
</dependency>
<!-- xxl-job-core -->
<dependency>

@ -14,14 +14,24 @@ spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
### mybatis
# mysql
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
# postgresql
#mybatis.mapper-locations=classpath:/mybatis-mapper-postgresql/*Mapper.xml
### xxl-job, datasource
# mysql configuration
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# postgresql configuration
#spring.datasource.url=jdbc:postgresql://10.10.10.231:5432/postgres?currentSchema=xxl_job
#spring.datasource.username=postgres
#spring.datasource.password=123456
#spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=30

@ -0,0 +1,63 @@
<?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="order" property="order" />
<result column="address_type" property="addressType" />
<result column="address_list" property="addressList" />
</resultMap>
<sql id="Base_Column_List">
t.id,
t.app_name,
t.title,
t."order",
t.address_type,
t.address_list
</sql>
<select id="findAll" resultMap="XxlJobGroup">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_group AS t
ORDER BY t.order ASC
</select>
<select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_group AS t
WHERE t.address_type = #{addressType}
ORDER BY t.order 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", "order", "address_type", "address_list")
values ( #{appName}, #{title}, #{order}, #{addressType}, #{addressList});
</insert>
<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
UPDATE xxl_job_group
SET "app_name" = #{appName},
"title" = #{title},
"order" = #{order},
"address_type" = #{addressType},
"address_list" = #{addressList}
WHERE id = #{id}
</update>
<delete id="remove" parameterType="java.lang.Integer" >
DELETE FROM xxl_job_group
WHERE id = #{id}
</delete>
<select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_group AS t
WHERE t.id = #{id}
</select>
</mapper>

@ -0,0 +1,227 @@
<?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.XxlJobInfoDao">
<resultMap id="XxlJobInfo" type="com.xxl.job.admin.core.model.XxlJobInfo" >
<result column="id" property="id" />
<result column="job_group" property="jobGroup" />
<result column="job_cron" property="jobCron" />
<result column="job_desc" property="jobDesc" />
<result column="add_time" property="addTime" />
<result column="update_time" property="updateTime" />
<result column="author" property="author" />
<result column="alarm_email" property="alarmEmail" />
<result column="executor_route_strategy" property="executorRouteStrategy" />
<result column="executor_handler" property="executorHandler" />
<result column="executor_param" property="executorParam" />
<result column="executor_block_strategy" property="executorBlockStrategy" />
<result column="executor_timeout" property="executorTimeout" />
<result column="executor_fail_retry_count" property="executorFailRetryCount" />
<result column="glue_type" property="glueType" />
<result column="glue_source" property="glueSource" />
<result column="glue_remark" property="glueRemark" />
<result column="glue_updatetime" property="glueUpdatetime" />
<result column="child_jobid" property="childJobId" />
<result column="trigger_status" property="triggerStatus" />
<result column="trigger_last_time" property="triggerLastTime" />
<result column="trigger_next_time" property="triggerNextTime" />
</resultMap>
<sql id="Base_Column_List">
t.id,
t.job_group,
t.job_cron,
t.job_desc,
t.add_time,
t.update_time,
t.author,
t.alarm_email,
t.executor_route_strategy,
t.executor_handler,
t.executor_param,
t.executor_block_strategy,
t.executor_timeout,
t.executor_fail_retry_count,
t.glue_type,
t.glue_source,
t.glue_remark,
t.glue_updatetime,
t.child_jobid,
t.trigger_status,
t.trigger_last_time,
t.trigger_next_time
</sql>
<select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
<trim prefix="WHERE" prefixOverrides="AND | OR" >
<if test="jobGroup gt 0">
AND t.job_group = #{jobGroup}
</if>
<if test="triggerStatus gte 0">
AND t.trigger_status = #{triggerStatus}
</if>
<if test="jobDesc != null and jobDesc != ''">
AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
</if>
<if test="executorHandler != null and executorHandler != ''">
AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
</if>
<if test="author != null and author != ''">
AND t.author like CONCAT(CONCAT('%', #{author}), '%')
</if>
</trim>
ORDER BY id DESC
LIMIT #{pagesize} offset #{offset}
</select>
<select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
SELECT count(1)
FROM xxl_job_info AS t
<trim prefix="WHERE" prefixOverrides="AND | OR" >
<if test="jobGroup gt 0">
AND t.job_group = #{jobGroup}
</if>
<if test="triggerStatus gte 0">
AND t.trigger_status = #{triggerStatus}
</if>
<if test="jobDesc != null and jobDesc != ''">
AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
</if>
<if test="executorHandler != null and executorHandler != ''">
AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
</if>
<if test="author != null and author != ''">
AND t.author like CONCAT(CONCAT('%', #{author}), '%')
</if>
</trim>
</select>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_info (
job_group,
job_cron,
job_desc,
add_time,
update_time,
author,
alarm_email,
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,
trigger_status,
trigger_last_time,
trigger_next_time
) VALUES (
#{jobGroup},
#{jobCron},
#{jobDesc},
NOW(),
NOW(),
#{author},
#{alarmEmail},
#{executorRouteStrategy},
#{executorHandler},
#{executorParam},
#{executorBlockStrategy},
#{executorTimeout},
#{executorFailRetryCount},
#{glueType},
#{glueSource},
#{glueRemark},
NOW(),
#{childJobId},
#{triggerStatus},
#{triggerLastTime},
#{triggerNextTime}
);
<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID()
/*SELECT @@IDENTITY AS id*/
</selectKey>-->
</insert>
<select id="loadById" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
WHERE t.id = #{id}
</select>
<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
UPDATE xxl_job_info
SET
job_group = #{jobGroup},
job_cron = #{jobCron},
job_desc = #{jobDesc},
update_time = NOW(),
author = #{author},
alarm_email = #{alarmEmail},
executor_route_strategy = #{executorRouteStrategy},
executor_handler = #{executorHandler},
executor_param = #{executorParam},
executor_block_strategy = #{executorBlockStrategy},
executor_timeout = ${executorTimeout},
executor_fail_retry_count = ${executorFailRetryCount},
glue_type = #{glueType},
glue_source = #{glueSource},
glue_remark = #{glueRemark},
glue_updatetime = #{glueUpdatetime},
child_jobid = #{childJobId},
trigger_status = #{triggerStatus},
trigger_last_time = #{triggerLastTime},
trigger_next_time = #{triggerNextTime}
WHERE id = #{id}
</update>
<delete id="delete" parameterType="java.util.HashMap">
DELETE
FROM xxl_job_info
WHERE id = #{id}
</delete>
<select id="getJobsByGroup" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
WHERE t.job_group = #{jobGroup}
</select>
<select id="findAllCount" resultType="int">
SELECT count(1)
FROM xxl_job_info
</select>
<select id="scheduleJobQuery" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
WHERE t.trigger_status = 1
and t.trigger_next_time<![CDATA[ <= ]]> #{maxNextTime}
</select>
<update id="scheduleUpdate" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
UPDATE xxl_job_info
SET
trigger_last_time = #{triggerLastTime},
trigger_next_time = #{triggerNextTime},
trigger_status = #{triggerStatus}
WHERE id = #{id}
</update>
</mapper>

@ -0,0 +1,71 @@
<?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.XxlJobLogGlueDao">
<resultMap id="XxlJobLogGlue" type="com.xxl.job.admin.core.model.XxlJobLogGlue" >
<result column="id" property="id" />
<result column="job_id" property="jobId" />
<result column="glue_type" property="glueType" />
<result column="glue_source" property="glueSource" />
<result column="glue_remark" property="glueRemark" />
<result column="add_time" property="addTime" />
<result column="update_time" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
t.id,
t.job_id,
t.glue_type,
t.glue_source,
t.glue_remark,
t.add_time,
t.update_time
</sql>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_logglue (
"job_id",
"glue_type",
"glue_source",
"glue_remark",
"add_time",
"update_time"
) VALUES (
#{jobId},
#{glueType},
#{glueSource},
#{glueRemark},
now(),
now()
);
<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>-->
</insert>
<select id="findByJobId" parameterType="java.lang.Integer" resultMap="XxlJobLogGlue">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_logglue AS t
WHERE t.job_id = #{jobId}
ORDER BY id DESC
</select>
<delete id="removeOld" >
DELETE FROM xxl_job_logglue
WHERE id NOT in(
SELECT id FROM(
SELECT id FROM xxl_job_logglue
WHERE "job_id" = #{jobId}
ORDER BY update_time desc
LIMIT #{limit} offset 0
) t1
) AND "job_id" = #{jobId}
</delete>
<delete id="deleteByJobId" parameterType="java.lang.Integer" >
DELETE FROM xxl_job_logglue
WHERE "job_id" = #{jobId}
</delete>
</mapper>

@ -0,0 +1,239 @@
<?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) 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="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) 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 AS t
WHERE 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_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="updateHandleInfo">
UPDATE xxl_job_log
SET
"handle_time"= #{handleTime},
"handle_code"= #{handleCode},
"handle_msg"= #{handleMsg}
WHERE "id"= #{id}
</update>
<delete id="delete" >
delete from xxl_job_log
WHERE job_id = #{jobId}
</delete>
<select id="triggerCountByHandleCode" resultType="int" >
SELECT count(1)
FROM xxl_job_log AS t
<trim prefix="WHERE" prefixOverrides="AND | OR" >
<if test="handleCode gt 0">
AND t.handle_code = #{handleCode}
</if>
</trim>
</select>
<select id="triggerCountByDay" resultType="java.util.Map" >
SELECT
to_char(trigger_time,'yyyy-mm-dd') 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>
<delete id="clearLog" >
delete 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} offset 0
) t1
)
</if>
</trim>
</delete>
<select id="findFailJobLogIds" 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
</select>
<update id="updateAlarmStatus" >
UPDATE xxl_job_log
SET
"alarm_status" = #{newAlarmStatus}
WHERE "id"= #{logId} AND "alarm_status" = #{oldAlarmStatus}
</update>
</mapper>

@ -0,0 +1,62 @@
<?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.XxlJobRegistryDao">
<resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core.model.XxlJobRegistry" >
<result column="id" property="id" />
<result column="registry_group" property="registryGroup" />
<result column="registry_key" property="registryKey" />
<result column="registry_value" property="registryValue" />
<result column="update_time" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
t.id,
t.registry_group,
t.registry_key,
t.registry_value,
t.update_time
</sql>
<select id="findDead" parameterType="java.lang.Integer" resultType="java.lang.Integer" >
SELECT t.id
FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ < ]]> (NOW() - INTERVAL '${timeout} S')
</select>
<delete id="removeDead" parameterType="java.lang.Integer" >
DELETE FROM xxl_job_registry
WHERE id in
<foreach collection="ids" item="item" open="(" close=")" separator="," >
#{item}
</foreach>
</delete>
<select id="findAll" parameterType="java.lang.Integer" resultMap="XxlJobRegistry">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ > ]]> (NOW() - INTERVAL '${timeout} S')
</select>
<update id="registryUpdate" >
UPDATE xxl_job_registry
SET "update_time" = NOW()
WHERE "registry_group" = #{registryGroup}
AND "registry_key" = #{registryKey}
AND "registry_value" = #{registryValue}
</update>
<insert id="registrySave" >
INSERT INTO xxl_job_registry( "registry_group" , "registry_key" , "registry_value", "update_time")
VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, NOW())
</insert>
<delete id="registryDelete" >
DELETE FROM xxl_job_registry
WHERE registry_group = #{registryGroup}
AND registry_key = #{registryKey}
AND registry_value = #{registryValue}
</delete>
</mapper>

@ -0,0 +1,87 @@
<?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.XxlJobUserDao">
<resultMap id="XxlJobUser" type="com.xxl.job.admin.core.model.XxlJobUser" >
<result column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
<result column="role" property="role" />
<result column="permission" property="permission" />
</resultMap>
<sql id="Base_Column_List">
t.id,
t.username,
t.password,
t.role,
t.permission
</sql>
<select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobUser">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_user AS t
<trim prefix="WHERE" prefixOverrides="AND | OR" >
<if test="username != null and username != ''">
AND t.username like CONCAT(CONCAT('%', #{username}), '%')
</if>
<if test="role gt -1">
AND t.role = #{role}
</if>
</trim>
ORDER BY username ASC
LIMIT #{pagesize} offset #{offset}
</select>
<select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
SELECT count(1)
FROM xxl_job_user AS t
<trim prefix="WHERE" prefixOverrides="AND | OR" >
<if test="username != null and username != ''">
AND t.username like CONCAT(CONCAT('%', #{username}), '%')
</if>
<if test="role gt -1">
AND t.role = #{role}
</if>
</trim>
</select>
<select id="loadByUserName" parameterType="java.util.HashMap" resultMap="XxlJobUser">
SELECT <include refid="Base_Column_List" />
FROM xxl_job_user AS t
WHERE t.username = #{username}
</select>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobUser" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_user (
username,
password,
role,
permission
) VALUES (
#{username},
#{password},
#{role},
#{permission}
);
</insert>
<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobUser" >
UPDATE xxl_job_user
SET
<if test="password != null and password != ''">
password = #{password},
</if>
role = #{role},
permission = #{permission}
WHERE id = #{id}
</update>
<delete id="delete" parameterType="java.util.HashMap">
DELETE
FROM xxl_job_user
WHERE id = #{id}
</delete>
</mapper>
Loading…
Cancel
Save