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">
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false">
<foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
INSERT INTO sj_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
VALUES (
#{item.namespaceId},
#{item.groupName},
#{item.jobId},
@ -16,7 +16,7 @@
#{item.message},
#{item.createDt},
#{item.realTime}
FROM DUAL
)
</foreach>
</insert>

View File

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

View File

@ -3,10 +3,10 @@
<mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.RetryTaskLogMessageMapper">
<insert id="insertBatch" parameterType="java.util.List">
<foreach collection="list" item="item" open="BEGIN" separator=";" close=";END;">
INSERT INTO sj_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
VALUES (
#{item.namespaceId},
#{item.groupName},
#{item.uniqueId},
@ -14,7 +14,7 @@
#{item.message},
#{item.createDt},
#{item.realTime}
FROM DUAL
)
</foreach>
</insert>

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);
}
}