<?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.snailjob.template.datasource.persistence.mapper.RetryTaskMapper"> <!-- 定义批量新增的 SQL 映射 --> <insert id="batchInsert" parameterType="java.util.List"> INSERT INTO sj_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} ) </foreach> </insert> <update id="updateBatchNextTriggerAtById" parameterType="java.util.List"> UPDATE sj_retry_task_${partition} SET next_trigger_at = src.next_trigger_at FROM sj_retry_task_${partition} AS target JOIN ( <foreach collection="list" item="item" index="index" separator="UNION ALL"> SELECT #{item.nextTriggerAt} AS next_trigger_at, #{item.id} AS id </foreach> ) AS src ON target.id = src.id; </update> </mapper>