|
@@ -20,20 +20,34 @@ import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|
-import com.baomidou.mybatisplus.core.toolkit.*;
|
|
|
|
-import lombok.Data;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Constants;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
|
|
|
|
+
|
|
import org.apache.ibatis.executor.Executor;
|
|
import org.apache.ibatis.executor.Executor;
|
|
import org.apache.ibatis.mapping.MappedStatement;
|
|
import org.apache.ibatis.mapping.MappedStatement;
|
|
import org.apache.ibatis.mapping.SqlCommandType;
|
|
import org.apache.ibatis.mapping.SqlCommandType;
|
|
-import org.apache.ibatis.plugin.*;
|
|
|
|
|
|
+import org.apache.ibatis.plugin.Interceptor;
|
|
|
|
+import org.apache.ibatis.plugin.Intercepts;
|
|
|
|
+import org.apache.ibatis.plugin.Invocation;
|
|
|
|
+import org.apache.ibatis.plugin.Plugin;
|
|
|
|
+import org.apache.ibatis.plugin.Signature;
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
import java.sql.Timestamp;
|
|
import java.sql.Timestamp;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
-import java.util.*;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Properties;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+import lombok.Data;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Optimistic Lock Light version
|
|
* Optimistic Lock Light version
|
|
* <p>Intercept on {@link Executor}.update;</p>
|
|
* <p>Intercept on {@link Executor}.update;</p>
|
|
@@ -136,7 +150,7 @@ public class OptimisticLockerInterceptor implements Interceptor {
|
|
return invocation.proceed();
|
|
return invocation.proceed();
|
|
} else {
|
|
} else {
|
|
List<EntityField> fields = entityFieldsCache.computeIfAbsent(entityClass, this::getFieldsFromClazz);
|
|
List<EntityField> fields = entityFieldsCache.computeIfAbsent(entityClass, this::getFieldsFromClazz);
|
|
- Map<String, Object> entityMap = new HashMap<>();
|
|
|
|
|
|
+ Map<String, Object> entityMap = new HashMap<>(fields.size());
|
|
for (EntityField ef : fields) {
|
|
for (EntityField ef : fields) {
|
|
Field fd = ef.getField();
|
|
Field fd = ef.getField();
|
|
entityMap.put(fd.getName(), fd.get(et));
|
|
entityMap.put(fd.getName(), fd.get(et));
|