问题描述:
Duplicate entry ‘210088046774906883’ for key ‘PRIMARY’
为了节省空间,直接在多线程中插入传入的对象
private Future<String> asyncSystemMessage(SystemMessage systemMessage, String[] userIds, ExecutorService systemMessageExecutorService, int start,int end) {
Future<String> callableTask = systemMessageExecutorService.submit(() -> {
for (int i = start; i <end; i++) {
systemMessage.setId(IDKeyUtil.generateId());
systemMessage.setUserId(Long.parseLong(userIds[i]));
systemMessageMapper.insert(systemMessage);
}
return "succeed";
});
return callableTask;
}
解决问题:
private Future<String> asyncSystemMessage(SystemMessage systemMessage, String[] userIds, ExecutorService systemMessageExecutorService, int start,int end) {
Future<String> callableTask = systemMessageExecutorService.submit(() -> {
SystemMessage message = new SystemMessage();
message.setTitle(systemMessage.getTitle());
message.setMessage(systemMessage.getMessage());
message.setType(systemMessage.getType());
message.setCreateTime(new Date());
for (int i = start; i <end; i++) {
message.setId(IDKeyUtil.generateId());
message.setUserId(Long.parseLong(userIds[i]));
systemMessageMapper.insert(message);
}
return "succeed";
});
return callableTask;
}