定时任务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}
相关推荐
编程、小哥哥31 分钟前
互联网大厂Java求职面试实战:Spring Boot微服务架构及Kafka消息处理示例解析
java·spring boot·微服务·kafka·面试技巧
BillKu2 小时前
Windows Server部署Vue3+Spring Boot项目
windows·spring boot·后端
sg_knight2 小时前
Eureka 高可用集群搭建实战:服务注册与发现的底层原理与避坑指南
java·spring boot·spring·spring cloud·微服务·云原生·eureka
Zong_09158 小时前
AutoCompose - 携程自动编排【开源】
java·spring boot·开源·自动编排
heart000_19 小时前
MySQL事务与锁机制详解:确保数据一致性的关键【MySQL系列】
数据库·mysql
一眼青苔9 小时前
MySQL 如何判断某个表中是否存在某个字段
数据库·mysql
西柚小萌新9 小时前
【大模型:知识图谱】--3.py2neo连接图数据库neo4j
数据库·知识图谱·neo4j
wangfenglei12345610 小时前
mybatis打印完整的SQL,p6spy
数据库·sql·mybatis
__风__10 小时前
PostgreSQL ERROR: out of shared memory处理
数据库·postgresql
麦兜*10 小时前
【后端架构师的发展路线】
java·spring boot·spring·spring cloud·kafka·tomcat·hibernate