定时任务xxl-job使用改造使用postgresql数据库

文章目录

参考

说明

mapper.xml语句修改

XxlJobLogMapper.xml

findFailJobLogIds(运算符替换)

原SQL

sql 复制代码
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}

修改

! 修改为 NOT

sql 复制代码
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}

pageList(分页)

原SQL

sql 复制代码
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 #{offset}, #{pagesize}

修改

sql 复制代码
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}

findClearLogIds(分页)

原SQL

sql 复制代码
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 0, #{clearBeforeNum}
		) t1
		)
	</if>
</trim>
order by id asc
LIMIT #{pagesize}

修改

sql 复制代码
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}

findLogReport(as大小写)

原SQL

sql 复制代码
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}

修改

as 后面的别名是大小写格式,加双引号

sql 复制代码
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}

XxlJobRegistryMapper.xml

findDead(时间)

原SQL

sql 复制代码
SELECT t.id
FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)

修改

DATE_ADD 在postgresql中没有

sql 复制代码
SELECT t.id
FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ < ]]> (now() - INTERVAL '${timeout} S')

findAll(时间)

原SQL

sql 复制代码
SELECT <include refid="Base_Column_List" />
FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)

修改

DATE_ADD 在postgresql中没有

sql 复制代码
SELECT <include refid="Base_Column_List" />
FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ > ]]> (now() - INTERVAL '${timeout} S')

XxlJobGroupMapper.xml

pageList(分页)

原SQL

sql 复制代码
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 ASC
LIMIT #{offset}, #{pagesize}

修改

sql 复制代码
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 ASC
LIMIT #{pagesize} offset #{offset}

XxlJobInfoMapper.xml

pageList(分页)

原SQL

sql 复制代码
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 #{offset}, #{pagesize}

修改

sql 复制代码
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}

scheduleJobQuery(分页)

原SQL

sql 复制代码
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
WHERE t.trigger_status = 1
	and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
ORDER BY id ASC
LIMIT #{pagesize}

修改

sql 复制代码
SELECT <include refid="Base_Column_List" />
FROM xxl_job_info AS t
WHERE t.trigger_status = 1
	and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
ORDER BY id ASC
LIMIT #{pagesize} offset 0

XxlJobLogGlueMapper.xml

removeOld(分页)

原SQL

sql 复制代码
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 0, #{limit}
	) t1
) AND "job_id" = #{jobId}

修改

sql 复制代码
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}
	) t1
) AND "job_id" = #{jobId}

XxlJobUserMapper.xml

pageList(分页)

原SQL

sql 复制代码
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 #{offset}, #{pagesize}

修改

sql 复制代码
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}
相关推荐
川石课堂软件测试1 小时前
Oracle 数据库:视图与索引
数据库·网络协议·nginx·http·oracle·grafana·prometheus
理智的煎蛋5 小时前
MySQL高可用架构:MHA
linux·数据库·mysql·架构·可用性测试
罗光记5 小时前
苹果内部 AI聊天机器人“Asa”曝光,为零售员工打造专属A
数据库·经验分享·百度·微信公众平台·新浪微博
一个松6 小时前
【无标题】
spring boot
li35747 小时前
从“内存操作”到“原子更新”:一次代码思维的跃迁
数据库·oracle
瀚高PG实验室7 小时前
执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。
数据库·sql·瀚高数据库
小白考证进阶中7 小时前
终于赶在考试券过期前把Oracle OCP证书考下来了!
运维·数据库·oracle·dba·开闭原则·数据库管理员
DCTANT8 小时前
【报错记录】OpenGauss/磐维数据库连接报:org.postgresql.util.PSQLException: 致命错误: 账户被锁定
数据库·postgresql
keep__go8 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
Doris_LMS8 小时前
Git的强软硬回退(三)
运维·服务器·数据库·git·idea