|
|
|
@ -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,7 +1045,7 @@ 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) {
|
|
|
|
|
return null;
|
|
|
|
@ -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");
|
|
|
|
|