fix: 实现batchInsert、batchUpdate, 格式化mapper.xml

This commit is contained in:
dhb52 2024-04-03 16:21:58 +08:00
parent 0ebeeda840
commit 27ac845c5e
46 changed files with 513 additions and 455 deletions

View File

@ -17,14 +17,17 @@
<result column="create_dt" jdbcType="TIMESTAMP" property="createDt" />
<result column="update_dt" jdbcType="TIMESTAMP" property="updateDt" />
</resultMap>
<sql id="Base_Column_List">
id,namespace_id, group_name,job_id,notify_status,notify_type, notify_attribute, notify_threshold, notify_scene,rate_limiter_status,rate_limiter_threshold, description,
create_dt, update_dt
id,namespace_id, group_name,job_id,notify_status,notify_type, notify_attribute, notify_threshold,
notify_scene, rate_limiter_status, rate_limiter_threshold, description, create_dt, update_dt
</sql>
<select id="selectJobNotifyConfigList"
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobNotifyConfigResponseDO">
SELECT a.*, b.job_name
FROM job_notify_config a join job b on a.job_id = b.id
FROM job_notify_config a
JOIN job b ON a.job_id = b.id
${ew.customSqlSegment}
</select>
</mapper>

View File

@ -13,11 +13,17 @@
<result column="update_dt" property="updateDt" />
<result column="deleted" property="deleted" />
</resultMap>
<select id="selectJobBatchPageList"
parameterType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobBatchQueryDO"
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobBatchResponseDO">
SELECT a.*, b.job_name, b.task_type, b.block_strategy, b.trigger_type
FROM job_task_batch a join job b on a.job_id = b.id
SELECT a.*,
b.job_name,
b.task_type,
b.block_strategy,
b.trigger_type
FROM job_task_batch a
JOIN job b ON a.job_id = b.id
${ew.customSqlSegment}
</select>
@ -55,8 +61,15 @@
<select id="selectJobBatchListByIds"
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobBatchResponseDO">
SELECT a.*, b.job_name, b.task_type, b.block_strategy, b.trigger_type,b.executor_info,b.args_str
FROM job_task_batch a join job b on a.job_id = b.id
SELECT a.*,
b.job_name,
b.task_type,
b.block_strategy,
b.trigger_type,
b.executor_info,
b.args_str
FROM job_task_batch a
JOIN job b ON a.job_id = b.id
${ew.customSqlSegment}
</select>
</mapper>

View File

@ -12,6 +12,7 @@
<result column="create_dt" jdbcType="TIMESTAMP" property="createDt" />
<result column="update_dt" jdbcType="TIMESTAMP" property="updateDt" />
</resultMap>
<sql id="Base_Column_List">
id, group_name, notify_type, notify_attribute, notify_threshold, notify_scene, description,
create_dt, update_dt

View File

@ -14,7 +14,9 @@
<result column="create_dt" jdbcType="TIMESTAMP" property="createDt" />
<result column="update_dt" jdbcType="TIMESTAMP" property="updateDt" />
</resultMap>
<sql id="Base_Column_List">
id, scene_name, group_name, scene_status, max_retry_count, back_off, `trigger_interval`, deadline_request, description, create_dt, update_dt
id, scene_name, group_name, scene_status, max_retry_count, back_off, trigger_interval,
deadline_request, description, create_dt, update_dt
</sql>
</mapper>

View File

@ -16,11 +16,14 @@
<result column="deleted" property="deleted"/>
<result column="ext_attrs" property="extAttrs"/>
</resultMap>
<select id="selectWorkflowBatchPageList"
parameterType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.WorkflowBatchQueryDO"
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.WorkflowBatchResponseDO">
SELECT a.*, b.workflow_name
FROM workflow_task_batch a join workflow b on a.workflow_id = b.id
SELECT a.*,
b.workflow_name
FROM workflow_task_batch a
JOIN workflow b ON a.workflow_id = b.id
${ew.customSqlSegment}
</select>

View File

@ -18,18 +18,8 @@
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO job_log_message
(
namespace_id,
group_name,
job_id,
task_batch_id,
task_id,
log_num,
message,
create_dt,
real_time
)
INSERT INTO job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id,
log_num, message, create_dt, real_time)
VALUES
<foreach collection="list" item="item" separator=",">
(

View File

@ -12,6 +12,7 @@
<result column="message" property="message"/>
<result column="real_time" property="realTime"/>
</resultMap>
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO retry_task_log_message (namespace_id, group_name, unique_id, log_num, message,

View File

@ -19,18 +19,35 @@
<result column="create_dt" jdbcType="TIMESTAMP" property="createDt" />
<result column="update_dt" jdbcType="TIMESTAMP" property="updateDt" />
</resultMap>
<sql id="Base_Column_List">
id, namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, retry_count, retry_status,
create_dt, update_dt, task_type
</sql>
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO retry_task (namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, task_type, retry_status, create_dt)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.namespaceId}, #{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.taskType}, #{item.retryStatus}, #{item.createDt})
(
#{item.namespaceId},
#{item.uniqueId},
#{item.groupName},
#{item.sceneName},
#{item.idempotentId},
#{item.bizNo},
#{item.executorName},
#{item.argsStr},
#{item.extAttrs},
#{item.nextTriggerAt},
#{item.taskType},
#{item.retryStatus},
#{item.createDt}
)
</foreach>
</insert>
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
UPDATE retry_task_${partition} rt,
(

View File

@ -18,18 +18,8 @@
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO job_log_message
(
namespace_id,
group_name,
job_id,
task_batch_id,
task_id,
log_num,
message,
create_dt,
real_time
)
INSERT INTO job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id,
log_num, message, create_dt, real_time)
VALUES
<foreach collection="list" item="item" separator=",">
(

View File

@ -12,6 +12,7 @@
<result column="message" property="message"/>
<result column="real_time" property="realTime"/>
</resultMap>
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO retry_task_log_message (namespace_id, group_name, unique_id, log_num, message,

View File

@ -19,18 +19,35 @@
<result column="create_dt" jdbcType="TIMESTAMP" property="createDt" />
<result column="update_dt" jdbcType="TIMESTAMP" property="updateDt" />
</resultMap>
<sql id="Base_Column_List">
id, namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, retry_count, retry_status,
create_dt, update_dt, task_type
</sql>
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO retry_task (namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, task_type, retry_status, create_dt)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.namespaceId}, #{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.taskType}, #{item.retryStatus}, #{item.createDt})
(
#{item.namespaceId},
#{item.uniqueId},
#{item.groupName},
#{item.sceneName},
#{item.idempotentId},
#{item.bizNo},
#{item.executorName},
#{item.argsStr},
#{item.extAttrs},
#{item.nextTriggerAt},
#{item.taskType},
#{item.retryStatus},
#{item.createDt}
)
</foreach>
</insert>
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
UPDATE retry_task_${partition} rt,
(

View File

@ -18,21 +18,10 @@
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="item" separator="">
INTO job_log_message
(
namespace_id,
group_name,
job_id,
task_batch_id,
task_id,
log_num,
message,
create_dt,
real_time
)
VALUES (
INSERT INTO job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id,
log_num, message, create_dt, real_time)
<foreach collection="list" item="item" separator="UNION ALL">
SELECT
#{item.namespaceId},
#{item.groupName},
#{item.jobId},
@ -42,8 +31,7 @@
#{item.message},
#{item.createDt},
#{item.realTime}
)
FROM DUAL
</foreach>
SELECT * FROM DUAL
</insert>
</mapper>

View File

@ -27,18 +27,11 @@
</resultMap>
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
MERGE INTO job dest
USING (
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">
SELECT
#{item.nextTriggerAt} AS next_trigger_at,
#{item.id} AS id
FROM DUAL
<foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
UPDATE job
SET next_trigger_at = #{item.nextTriggerAt}
WHERE id = #{item.id}
</foreach>
) src
ON (dest.id = src.id)
WHEN MATCHED THEN
UPDATE SET dest.next_trigger_at = src.next_trigger_at
</update>
</mapper>

View File

@ -91,8 +91,7 @@
<select id="dashboardRank"
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardRetryLineResponseDO$Rank">
SELECT * FROM
(
SELECT * FROM (
SELECT
<if test="systemTaskType == 3">
group_name || '/' || (SELECT job_name FROM job WHERE id = business_id) AS name,
@ -104,8 +103,7 @@
FROM job_summary
${ew.customSqlSegment}
HAVING SUM(fail_num) > 0
ORDER BY total DESC
)
ORDER BY total DESC)
WHERE ROWNUM <![CDATA[ <= ]]> 10
</select>

View File

@ -17,24 +17,23 @@
</resultMap>
<sql id="Base_Column_List">
id, namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, create_dt, task_type
id, namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no,
executor_name, args_str, ext_attrs, create_dt, task_type
</sql>
<insert id="insertBatch">
INSERT ALL
<foreach collection="retryDeadLetters" item="retryDeadLetter" separator="">
INTO retry_dead_letter (namespace_id, unique_id, group_name, scene_name,
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false" keyProperty="id">
INSERT INTO retry_dead_letter (namespace_id, unique_id, group_name, scene_name,
idempotent_id, biz_no, executor_name, args_str,
ext_attrs, create_dt)
VALUES (
<foreach collection="retryDeadLetters" item="retryDeadLetter" separator="UNION ALL">
SELECT
#{retryDeadLetter.namespaceId,jdbcType=VARCHAR}, #{retryDeadLetter.uniqueId,jdbcType=VARCHAR},
#{retryDeadLetter.groupName,jdbcType=VARCHAR}, #{retryDeadLetter.sceneName,jdbcType=VARCHAR},
#{retryDeadLetter.idempotentId,jdbcType=VARCHAR}, #{retryDeadLetter.bizNo,jdbcType=VARCHAR},
#{retryDeadLetter.executorName,jdbcType=VARCHAR}, #{retryDeadLetter.argsStr,jdbcType=VARCHAR},
#{retryDeadLetter.extAttrs,jdbcType=VARCHAR}, #{retryDeadLetter.createDt,jdbcType=TIMESTAMP}
)
FROM DUAL
</foreach>
SELECT * FROM DUAL
</insert>
<select id="countRetryDeadLetterByCreateAt" resultType="int">

View File

@ -94,16 +94,14 @@
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardRetryLineResponseDO$Rank">
SELECT
*
FROM
(
FROM (
SELECT
group_name || '/' || scene_name AS name,
SUM(running_num + finish_num + max_count_num + suspend_num) AS total
FROM retry_summary
${ew.customSqlSegment}
HAVING SUM(running_num + finish_num + max_count_num + suspend_num) > 0
ORDER BY SUM(running_num + finish_num + max_count_num + suspend_num) DESC
)
ORDER BY SUM(running_num + finish_num + max_count_num + suspend_num) DESC)
WHERE ROWNUM <![CDATA[ <= ]]> 10
</select>

View File

@ -23,18 +23,16 @@
</sql>
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="item" separator="">
INTO retry_task_log (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name,
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false" keyProperty="id">
INSERT INTO retry_task_log (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name,
args_str, ext_attrs, task_type, create_dt, namespace_id)
VALUES (
<foreach collection="list" item="item" separator="UNION ALL">
SELECT
#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId},
#{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs},
#{item.taskType}, #{item.createDt}, #{item.namespaceId}
)
FROM DUAL
</foreach>
SELECT * FROM DUAL
</insert>
<!-- 重试统计 -->

View File

@ -11,4 +11,28 @@
<result column="message" property="message" />
</resultMap>
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO retry_task_log_message (namespace_id, group_name, unique_id, log_num, message,
create_dt, real_time)
<foreach collection="list" item="item" separator="UNION ALL">
SELECT
#{item.namespaceId},
#{item.groupName},
#{item.uniqueId},
#{item.logNum},
#{item.message},
#{item.createDt},
#{item.realTime}
FROM DUAL
</foreach>
</insert>
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="BEGIN" separator=";" close=";END;">
UPDATE retry_task_log_message
SET message = #{item.message}, log_num = #{item.logNum}
WHERE id = #{item.id}
</foreach>
</update>
</mapper>

View File

@ -27,31 +27,22 @@
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="item" separator="">
INTO retry_task (namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no,
INSERT INTO retry_task (namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no,
executor_name, args_str, ext_attrs, next_trigger_at, task_type, retry_status, create_dt)
VALUES (
<foreach collection="list" item="item" separator="UNION ALL">
SELECT
#{item.namespaceId}, #{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId},
#{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt},
#{item.taskType}, #{item.retryStatus}, #{item.createDt}
)
FROM DUAL
</foreach>
SELECT * FROM DUAL
</insert>
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
MERGE INTO retry_task_${partition} dest
USING (
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">
SELECT
#{item.nextTriggerAt} AS next_trigger_at,
#{item.id} AS id
FROM DUAL
<foreach collection="list" item="item" index="index" open="BEGIN" separator=";" close=";END;">
UPDATE retry_task_${partition}
SET next_trigger_at = #{item.nextTriggerAt}
WHERE id = #{item.id}
</foreach>
) src
ON (dest.id = src.id)
WHEN MATCHED THEN
UPDATE SET dest.next_trigger_at = src.next_trigger_at
</update>
</mapper>

View File

@ -23,7 +23,7 @@
<!-- useGeneratedKeys="false" 否则报错ORA-00933: SQL command not properly ended -->
INSERT INTO server_node (namespace_id, group_name, host_id, host_ip, host_port,
expire_at, node_type, ext_attrs, context_path, create_dt)
<foreach collection="records" item="item" index="index" separator=" UNION ">
<foreach collection="records" item="item" index="index" separator="UNION ALL">
SELECT
#{item.namespaceId,jdbcType=VARCHAR},
#{item.groupName,jdbcType=VARCHAR},

View File

@ -17,18 +17,10 @@
</resultMap>
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
MERGE INTO workflow dest
USING (
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">
SELECT
#{item.nextTriggerAt} AS next_trigger_at,
#{item.id} AS id
FROM DUAL
<foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
UPDATE workflow
SET next_trigger_at = #{item.nextTriggerAt}
WHERE id = #{item.id}
</foreach>
) src
ON (dest.id = src.id)
WHEN MATCHED THEN
UPDATE SET
dest.next_trigger_at = src.next_trigger_at
</update>
</mapper>

View File

@ -30,7 +30,7 @@
UPDATE job AS rt
SET next_trigger_at = tt.next_trigger_at
FROM (
<foreach collection="list" item="item" index="index" separator=" union all ">
<foreach collection="list" item="item" index="index" separator="UNION ALL">
select
#{item.nextTriggerAt} as next_trigger_at,
#{item.id} as id

View File

@ -35,7 +35,7 @@
UPDATE retry_task_${partition} AS rt
SET next_trigger_at = tt.next_trigger_at
FROM (
<foreach collection="list" item="item" index="index" separator=" union all ">
<foreach collection="list" item="item" index="index" separator="UNION ALL">
select
#{item.nextTriggerAt} as next_trigger_at,
#{item.id} as id

View File

@ -19,7 +19,7 @@
UPDATE workflow AS rt
SET next_trigger_at = tt.next_trigger_at
FROM (
<foreach collection="list" item="item" index="index" separator=" union all ">
<foreach collection="list" item="item" index="index" separator="UNION ALL">
select
#{item.nextTriggerAt} as next_trigger_at,
#{item.id} as id

View File

@ -18,18 +18,8 @@
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO job_log_message
(
namespace_id,
group_name,
job_id,
task_batch_id,
task_id,
log_num,
message,
create_dt,
real_time
)
INSERT INTO job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id,
log_num, message, create_dt, real_time)
VALUES
<foreach collection="list" item="item" separator=",">
(

View File

@ -0,0 +1,49 @@
<?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.aizuda.easy.retry.template.datasource.persistence.mapper.RetryTaskLogMessageMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLogMessage">
<id column="id" property="id" />
<result column="group_name" property="groupName" />
<result column="unique_id" property="uniqueId" />
<result column="create_dt" property="createDt" />
<result column="log_num" property="logNum"/>
<result column="message" property="message"/>
<result column="real_time" property="realTime"/>
</resultMap>
<!-- 定义批量新增的 SQL 映射 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO retry_task_log_message (namespace_id, group_name, unique_id, log_num, message,
create_dt, real_time)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.namespaceId},
#{item.groupName},
#{item.uniqueId},
#{item.logNum},
#{item.message},
#{item.createDt},
#{item.realTime}
)
</foreach>
</insert>
<update id="batchUpdate" parameterType="java.util.List">
UPDATE retry_task_log_message
SET message = src.message, log_num = src.log_num
FROM retry_task_log_message AS dest
JOIN (
<foreach collection="list" item="item" index="index" separator="UNION ALL">
SELECT
#{item.message} AS message,
#{item.logNum} AS log_num,
#{item.id} AS id
</foreach>
) AS src
ON dest.id = src.id
</update>
</mapper>