定时任务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}
相关推荐
倔强的石头10612 分钟前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库·mysql·安全·金仓数据库
小鸡毛程序员21 分钟前
我在CSDN学MYSQL之----数据库基本概念和基本知识(下)
数据库·mysql
程序定小飞1 小时前
基于springboot的web的音乐网站开发与设计
java·前端·数据库·vue.js·spring boot·后端·spring
小灰灰搞电子2 小时前
Rust 操作Sqlite数据库详细教程
数据库·rust·sqlite
武昌库里写JAVA2 小时前
element-ui 2.x 及 vxe-table 2.x 使用 css 定制主题
java·vue.js·spring boot·sql·学习
IvorySQL2 小时前
你真的知道你正在运行哪个 PostgreSQL吗?
数据库·postgresql
l1t2 小时前
利用DeepSeek采用hugeint转字符串函数完善luadbi-duckdb的decimal处理
数据库·lua·c·duckdb·deepseek
无敌最俊朗@2 小时前
Qt 开发终极坑点手册图表版本
数据库
老衲提灯找美女3 小时前
MySQL数据库基础操作:
数据库·mysql·oracle
轻舟客丶3 小时前
ORA-03113的解决方案
数据库·经验分享·笔记·oracle