优化Mybatis-plus 自动填充

v1.4.1
Parker 5 years ago
parent c973bff5ef
commit 72b290bf33

@ -51,7 +51,7 @@ public class SQLDataAop {
}
@AfterReturning(returning = "ret", pointcut = "insert()")
public void insertHadnler(Object ret){
public void insertHandler(Object ret){
try {
if(ret == null){
throw new ServiceException(CoreMsg.SQL_EXCEPTION_INSERT);
@ -64,7 +64,7 @@ public class SQLDataAop {
}
@AfterReturning(returning = "ret", pointcut = "update()")
public void updateHadnler(Object ret){
public void updateHandler(Object ret){
try {
if(ret == null){
throw new ServiceException(CoreMsg.SQL_EXCEPTION_UPDATE);
@ -77,7 +77,7 @@ public class SQLDataAop {
}
@AfterReturning(returning = "ret", pointcut = "delete()")
public void deleteHadnler(Object ret){
public void deleteHandler(Object ret){
try {
if(ret != null){
Boolean retFlag = (Boolean) ret;

@ -53,9 +53,8 @@ public class UserCachingOperationNameGenerator {
private String startingWith(String prefix) {
if (generated.containsKey(prefix)) {
generated.put(prefix, generated.get(prefix) + 1);
String nextUniqueOperationName = String.format("%s_%s", prefix, generated.get(prefix));
//log.warn("组件中存在相同的方法名称,自动生成组件方法唯一名称进行替换: {}", nextUniqueOperationName);
return nextUniqueOperationName;
return String.format("%s_%s", prefix, generated.get(prefix));
} else {
generated.put(prefix, 0);
return prefix;

@ -15,15 +15,12 @@
*/
package org.opsli.core.cache.local;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.util.XmlUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.opsli.common.constants.CacheConstants;
import org.opsli.common.utils.Props;
import org.opsli.core.aspect.CacheDataAop;
@ -39,7 +36,6 @@ import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.List;
@ -219,7 +215,7 @@ public class CacheUtil {
* @return V
*/
public static Object getHash(String key, String field){
return CacheUtil.getHash(CacheConstants.EDEN_HASH_DATA,key,field,true);
return CacheUtil.getHash(key,field,true);
}
/**
@ -246,7 +242,7 @@ public class CacheUtil {
* @return V
*/
public static Object getHashByKeyOriginal(String key, String field){
return CacheUtil.getHash(CacheConstants.EDEN_HASH_DATA,key,field,false);
return CacheUtil.getHash(key,field,false);
}
/**
@ -449,16 +445,15 @@ public class CacheUtil {
/**
* Hash
* @param cacheName
* @param key
* @param field
* @param keyFlag key
* @return
*/
private static Object getHash(String cacheName, String key, String field, boolean keyFlag){
private static Object getHash(String key, String field, boolean keyFlag){
// 自动处理 key
if(keyFlag){
key = CacheUtil.handleKey(cacheName, key);
key = CacheUtil.handleKey(CacheConstants.EDEN_HASH_DATA, key);
}
Object v = null;
try {
@ -1065,10 +1060,7 @@ public class CacheUtil {
try {
// 判断Redis 是否 包含当前Nil值
Object o = redisPlugin.get(NIL_FLAG_PREFIX + key);
if(o != null){
return true;
}
return false;
return o != null;
}catch (Exception e){
log.error(e.getMessage(),e);
}

@ -17,6 +17,7 @@ package org.opsli.core.conf.mybatis;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ReflectUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -25,7 +26,6 @@ import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.*;
import org.opsli.api.wrapper.system.user.UserModel;
import org.opsli.common.constants.MyBatisConstants;
import org.opsli.core.utils.UserUtil;
import org.springframework.stereotype.Component;
@ -67,10 +67,7 @@ public class AutoFillInterceptor implements Interceptor {
private void fillField(Invocation invocation) {
Object[] args = invocation.getArgs();
SqlCommandType sqlCommandType = null;
for (int i = 0; i < args.length; i++) {
Object arg = args[i];
//String className = arg.getClass().getName();
//log.info(i + " 参数类型:" + className);
for (Object arg : args) {
//第一个参数处理。根据它判断是否给“操作属性”赋值。
//如果是第一个参数 MappedStatement
if (arg instanceof MappedStatement) {
@ -103,7 +100,8 @@ public class AutoFillInterceptor implements Interceptor {
if(arg == null ){
return;
}
// 当前时间
Date currDate = DateUtil.date();
Field[] fields = ReflectUtil.getFields(arg.getClass());
for (Field f : fields) {
f.setAccessible(true);
@ -112,25 +110,25 @@ public class AutoFillInterceptor implements Interceptor {
case MyBatisConstants.FIELD_CREATE_BY:
// 如果创建人 为空则进行默认赋值
Object createValue = ReflectUtil.getFieldValue(arg, f.getName());
if(createValue == null){
if(StringUtils.isBlank(Convert.toStr(createValue))){
setProperty(arg, MyBatisConstants.FIELD_CREATE_BY, UserUtil.getUser().getId());
}
break;
// 创建日期
case MyBatisConstants.FIELD_CREATE_TIME:
setProperty(arg, MyBatisConstants.FIELD_CREATE_TIME, new Date());
break;
// 更新人
case MyBatisConstants.FIELD_UPDATE_BY:
// 如果更新人 为空则进行默认赋值
Object updateValue = ReflectUtil.getFieldValue(arg, f.getName());
if(updateValue == null){
if(StringUtils.isBlank(Convert.toStr(updateValue))){
setProperty(arg, MyBatisConstants.FIELD_UPDATE_BY, UserUtil.getUser().getId());
}
break;
// 创建日期
case MyBatisConstants.FIELD_CREATE_TIME:
setProperty(arg, MyBatisConstants.FIELD_CREATE_TIME, currDate);
break;
// 更新日期
case MyBatisConstants.FIELD_UPDATE_TIME:
setProperty(arg, MyBatisConstants.FIELD_UPDATE_TIME, new Date());
setProperty(arg, MyBatisConstants.FIELD_UPDATE_TIME, currDate);
break;
// 乐观锁
case MyBatisConstants.FIELD_OPTIMISTIC_LOCK:
@ -142,10 +140,10 @@ public class AutoFillInterceptor implements Interceptor {
break;
// 多租户设置
case MyBatisConstants.FIELD_TENANT:
// 2020-12-05 修复当前租户可能为空字符串报错问题
// 如果租户ID 为空则进行默认赋值
Object tenantValue = ReflectUtil.getFieldValue(arg, f.getName());
String tenantValueStr = Convert.toStr(tenantValue);
if(StringUtils.isBlank(tenantValueStr)){
if(StringUtils.isBlank(Convert.toStr(tenantValue))){
setProperty(arg, MyBatisConstants.FIELD_TENANT, UserUtil.getTenantId());
}
break;
@ -187,13 +185,13 @@ public class AutoFillInterceptor implements Interceptor {
case MyBatisConstants.FIELD_UPDATE_BY:
// 如果更新人 为空则进行默认赋值
Object updateValue = ReflectUtil.getFieldValue(arg, f.getName());
if(updateValue == null){
if(StringUtils.isBlank(Convert.toStr(updateValue))){
setProperty(arg, MyBatisConstants.FIELD_UPDATE_BY, UserUtil.getUser().getId());
}
break;
// 更新日期
case MyBatisConstants.FIELD_UPDATE_TIME:
setProperty(arg, MyBatisConstants.FIELD_UPDATE_TIME, new Date());
setProperty(arg, MyBatisConstants.FIELD_UPDATE_TIME, DateUtil.date());
break;
default:
break;
@ -207,7 +205,7 @@ public class AutoFillInterceptor implements Interceptor {
/**
*
*
* @param bean
* @param bean bean
*/
private void setProperty(Object bean, String name, Object value) {
//根据需要,将相关属性赋上默认值

Loading…
Cancel
Save