1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.driver.executor.batch;
19
20 import com.google.common.collect.Lists;
21 import lombok.AccessLevel;
22 import lombok.EqualsAndHashCode;
23 import lombok.Getter;
24 import lombok.RequiredArgsConstructor;
25 import lombok.ToString;
26 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
27
28 import java.util.Collections;
29 import java.util.LinkedHashMap;
30 import java.util.LinkedList;
31 import java.util.List;
32 import java.util.Map;
33
34
35
36
37 @RequiredArgsConstructor
38 @Getter
39 @EqualsAndHashCode(of = "executionUnit")
40 @ToString
41 public final class BatchExecutionUnit {
42
43 private final ExecutionUnit executionUnit;
44
45 private final Map<Integer, Integer> jdbcAndActualAddBatchCallTimesMap = new LinkedHashMap<>();
46
47 @Getter(AccessLevel.NONE)
48 private int actualCallAddBatchTimes;
49
50
51
52
53
54
55 public void mapAddBatchCount(final int jdbcAddBatchTimes) {
56 jdbcAndActualAddBatchCallTimesMap.put(jdbcAddBatchTimes, actualCallAddBatchTimes++);
57 }
58
59
60
61
62
63
64 public List<List<Object>> getParameterSets() {
65 List<List<Object>> result = new LinkedList<>();
66 if (executionUnit.getSqlUnit().getParameters().isEmpty() || 0 == actualCallAddBatchTimes) {
67 result.add(Collections.emptyList());
68 } else {
69 result.addAll(Lists.partition(executionUnit.getSqlUnit().getParameters(), executionUnit.getSqlUnit().getParameters().size() / actualCallAddBatchTimes));
70 }
71 return result;
72 }
73 }