好的,以下是修改后的代码,增加了打印语句:
private static void insertData(Connection conn, int threadNo) throws SQLException {
PreparedStatement ps = conn.prepareStatement("INSERT INTO " + TABLE_NAME + " VALUES(?, ?, ?, ?, ?)");
Set taskIdSet = new HashSet<>();
while(taskIdSet.size() < 100000){
StringBuilder sb = new StringBuilder(TASK_ID_PREFIX);
for(int i=0; i<24; i++){
if(i == 21){ // 跳过原序列号位置
continue;
}
int randomNum = (int)(Math.random() * 16);
char hexChar = Character.forDigit(randomNum, 16);
sb.setCharAt(i, hexChar);
}
taskIdSet.add(sb.toString());
}
for (String taskId : taskIdSet) {
int taskState;
if (threadNo % 10 < 2) taskState = 1; // 10%的数据taskState为1
else if (threadNo % 10 < 4) taskState = 3; // 20%的数据taskState为3
else if (threadNo % 10 < 6) taskState = 5; // 30%的数据taskState为5
else if (threadNo % 10 < 8) taskState = 7; // 20%的数据taskState为7
else taskState = 9; // 20%的数据taskState为9
ps.setString(1, taskId);
ps.setString(2, TRANS_NO);
ps.setString(3, BANK_NO);
ps.setString(4, SYSTEM_NO);
ps.setInt(5, taskState);
ps.addBatch();
System.out.println("Thread " + threadNo + ": Inserted taskId " + taskId + " with taskState " + taskState);
}
ps.executeBatch();
ps.close();
}