feat(sj_1.2.0-beta1): oracle日志insertBatch采用BEGIN END

This commit is contained in:
dhb52 2024-09-04 10:26:29 +08:00
parent 02520f635e
commit bbbf73c4fb
5 changed files with 129 additions and 24 deletions

View File

@ -3,10 +3,10 @@
<mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.JobLogMessageMapper"> <mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.JobLogMessageMapper">
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false"> <insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false">
INSERT INTO sj_job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id, <foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
log_num, message, create_dt, real_time) INSERT INTO sj_job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id,
<foreach collection="list" item="item" separator="UNION ALL"> log_num, message, create_dt, real_time)
SELECT VALUES (
#{item.namespaceId}, #{item.namespaceId},
#{item.groupName}, #{item.groupName},
#{item.jobId}, #{item.jobId},
@ -16,7 +16,7 @@
#{item.message}, #{item.message},
#{item.createDt}, #{item.createDt},
#{item.realTime} #{item.realTime}
FROM DUAL )
</foreach> </foreach>
</insert> </insert>

View File

@ -3,10 +3,10 @@
<mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper"> <mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper">
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false"> <insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false">
INSERT INTO sj_job_summary (namespace_id, group_name, business_id, trigger_at, system_task_type, success_num, <foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
fail_num, fail_reason, stop_num, stop_reason, cancel_num, cancel_reason) INSERT INTO sj_job_summary (namespace_id, group_name, business_id, trigger_at, system_task_type, success_num,
<foreach collection="list" item="item" separator="UNION ALL"> fail_num, fail_reason, stop_num, stop_reason, cancel_num, cancel_reason)
SELECT VALUES (
#{item.namespaceId}, #{item.namespaceId},
#{item.groupName}, #{item.groupName},
#{item.businessId}, #{item.businessId},
@ -19,12 +19,12 @@
#{item.stopReason}, #{item.stopReason},
#{item.cancelNum}, #{item.cancelNum},
#{item.cancelReason} #{item.cancelReason}
FROM DUAL )
</foreach> </foreach>
</insert> </insert>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="BEGIN" separator=";" close=";END;"> <foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
UPDATE sj_job_summary UPDATE sj_job_summary
SET success_num = #{item.successNum}, SET success_num = #{item.successNum},
fail_num = #{item.failNum}, fail_num = #{item.failNum},

View File

@ -3,19 +3,19 @@
<mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.RetryTaskLogMessageMapper"> <mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.RetryTaskLogMessageMapper">
<insert id="insertBatch" parameterType="java.util.List"> <insert id="insertBatch" parameterType="java.util.List">
INSERT INTO sj_retry_task_log_message (namespace_id, group_name, unique_id, log_num, message, <foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
create_dt, real_time) INSERT INTO sj_retry_task_log_message (namespace_id, group_name, unique_id, log_num, message,
<foreach collection="list" item="item" separator="UNION ALL"> create_dt, real_time)
SELECT VALUES (
#{item.namespaceId}, #{item.namespaceId},
#{item.groupName}, #{item.groupName},
#{item.uniqueId}, #{item.uniqueId},
#{item.logNum}, #{item.logNum},
#{item.message}, #{item.message},
#{item.createDt}, #{item.createDt},
#{item.realTime} #{item.realTime}
FROM DUAL )
</foreach> </foreach>
</insert> </insert>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">

View File

@ -0,0 +1,54 @@
package com.aizuda.snailjob.server.mapper;
import cn.hutool.core.util.RandomUtil;
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobLogMessageMapper;
import com.aizuda.snailjob.template.datasource.persistence.po.JobLogMessage;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.List;
/**
* 测试 message 字段超4K长度的CLOB插入
*/
@SpringBootTest
public class JobLogMessageMapperTest {
@Autowired
private JobLogMessageMapper jobLogMessageMapper;
@Test
public void test_insertBatch() {
List<JobLogMessage> jobLogMessages = new ArrayList<>();
JobLogMessage jobLogMessage1 = new JobLogMessage();
jobLogMessage1.setJobId(1L);
jobLogMessage1.setNamespaceId("dev");
jobLogMessage1.setTaskId(1L);
jobLogMessage1.setGroupName("ruoyi_group");
jobLogMessage1.setTaskBatchId(1L);
jobLogMessage1.setRealTime(1725323299365L);
jobLogMessage1.setMessage(generateMessage());
jobLogMessage1.setLogNum(1);
jobLogMessages.add(jobLogMessage1);
JobLogMessage jobLogMessage2 = new JobLogMessage();
jobLogMessage2.setJobId(2L);
jobLogMessage2.setNamespaceId("dev");
jobLogMessage2.setTaskId(2L);
jobLogMessage2.setGroupName("ruoyi_group");
jobLogMessage2.setTaskBatchId(1L);
jobLogMessage2.setRealTime(1725323299365L);
jobLogMessage2.setMessage(generateMessage());
jobLogMessage2.setLogNum(2);
jobLogMessages.add(jobLogMessage2);
jobLogMessageMapper.insertBatch(jobLogMessages);
}
String generateMessage() {
return RandomUtil.randomString(5_000_0000);
}
}

View File

@ -0,0 +1,51 @@
package com.aizuda.snailjob.server.mapper;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.RandomUtil;
import com.aizuda.snailjob.template.datasource.persistence.mapper.RetryTaskLogMessageMapper;
import com.aizuda.snailjob.template.datasource.persistence.po.RetryTaskLogMessage;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.List;
/**
* 测试 message 字段超4K长度的CLOB插入
*/
@SpringBootTest
public class RetryTaskLogMessageMapperTest {
@Autowired
private RetryTaskLogMessageMapper retryTaskLogMessageMapper;
@Test
public void test_insertBatch() {
List<RetryTaskLogMessage> retryTaskLogMessages = new ArrayList<>();
RetryTaskLogMessage retryTaskLogMessage1 = new RetryTaskLogMessage();
retryTaskLogMessage1.setNamespaceId("dev");
retryTaskLogMessage1.setGroupName("ruoyi_group");
retryTaskLogMessage1.setRealTime(1725323299365L);
retryTaskLogMessage1.setMessage(generateMessage());
retryTaskLogMessage1.setLogNum(1);
retryTaskLogMessage1.setUniqueId(UUID.fastUUID().toString());
retryTaskLogMessages.add(retryTaskLogMessage1);
RetryTaskLogMessage retryTaskLogMessage2 = new RetryTaskLogMessage();
retryTaskLogMessage2.setNamespaceId("dev");
retryTaskLogMessage2.setGroupName("ruoyi_group");
retryTaskLogMessage2.setRealTime(1725323299365L);
retryTaskLogMessage2.setMessage(generateMessage());
retryTaskLogMessage2.setLogNum(1);
retryTaskLogMessage2.setUniqueId(UUID.fastUUID().toString());
retryTaskLogMessages.add(retryTaskLogMessage2);
retryTaskLogMessageMapper.insertBatch(retryTaskLogMessages);
}
String generateMessage() {
return RandomUtil.randomString(5_000_0000);
}
}