新增自动填充null值属性

yun-zuoyi
alwaysfrin 6 years ago
parent fdb9e655c3
commit 76cbc39fe1

@ -30,6 +30,17 @@ public interface BaseRepository <T, ID extends Serializable> extends JpaReposito
T insert(T item);
/**
* <br/>
* idlong0
* uuid
* @param item
*
* @param initParam null
* @throws Exception
*/
T insert(T item,boolean initParam);
/**
*
*
* @param item

@ -84,13 +84,18 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
@Override
public T insert(T item) {
return innerSave(item);
return insert(item,true);
}
@Override
public T insert(T item, boolean initParam) {
return innerSave(item, initParam);
}
@Override
public <S extends T> S save(S entity) {
//复写save方法若id为0或空则新增不然则修改
return (S) innerSave(entity);
return (S) innerSave(entity,true);
}
@Override
@ -1040,9 +1045,9 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
* @param item
* @return
*/
private T innerSave(T item) {
private T innerSave(T item, boolean initParam) {
try {
if(item ==null) {
if(item == null) {
return null;
}
Class<?> clazz = item.getClass();
@ -1066,7 +1071,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
if(idField != null){
Class<?> type = idField.getType();
Object val = idField.get(item);
if((type == long.class || type == Long.class) && (val == null || Long.parseLong(val.toString()) == 0)){
if(type == Long.class && (val == null || Long.parseLong(val.toString()) == 0)){
// long类型主键以snowflake为主键
idField.set(item, snowflakeIdMaker.nextId());
} else if(type == String.class && (val==null || "".equals(val))){
@ -1075,6 +1080,16 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
}
}
//属性值过滤避免null值
if(initParam){
for(Field checkField : clazz.getFields()){
if(checkField.get(item) == null){
// 未赋值的属性,进行初始化赋值
fieldSetInitParam(item, checkField);
}
}
}
entityManager.merge(item);
entityManager.flush();
if(idField!=null){
@ -1088,6 +1103,30 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
}
}
/**
*
* @param field
*/
private void fieldSetInitParam(T item,Field field) {
try {
if (field.getType() == String.class) {
field.set(item, "");
} else if (field.getType() == Byte.class || field.getType() == Character.class || field.getType() == Integer.class) {
field.set(item, 0);
} else if(field.getType() == Long.class){
field.set(item, 0L);
} else if(field.getType() == Float.class){
field.set(item, 0.0f);
} else if(field.getType() == Double.class){
field.set(item, 0.0d);
} else if(field.getType() == Boolean.class){
field.set(item, false);
}
} catch (IllegalAccessException e) {
LOGGER.error("自动赋值出错:{}", e.getMessage(), e);
}
}
/************** 部分业务 *************/
private String getNowTime(boolean needSecond) {
return needSecond ? getNowTime("yyyy-MM-dd HH:mm:ss") : getNowTime("yyyy-MM-dd HH:mm");

Loading…
Cancel
Save