提交 1891cb2e 编写于 作者: sq3536's avatar sq3536

field 处理 clumnname

上级 7cb3106c
...@@ -48,6 +48,9 @@ public class ${item.getCodeName()} extends EntityMP implements Serializable { ...@@ -48,6 +48,9 @@ public class ${item.getCodeName()} extends EntityMP implements Serializable {
<#assign jsonfield = defield.getCodeName()?lower_case > <#assign jsonfield = defield.getCodeName()?lower_case >
<#assign tablefieldano = "value = \""+columnname+"\"" > <#assign tablefieldano = "value = \""+columnname+"\"" >
<#assign defieldano = "" > <#assign defieldano = "" >
<#if prvateCodeName?lower_case != columnname>
<#assign defieldano = "name = \""+columnname+"\"">
</#if>
<#if defield.getDefaultValue()?? && defield.getDefaultValue()!=''> <#if defield.getDefaultValue()?? && defield.getDefaultValue()!=''>
<#assign defieldano = "defaultValue = \""+defield.getDefaultValue()+"\""> <#assign defieldano = "defaultValue = \""+defield.getDefaultValue()+"\"">
</#if> </#if>
...@@ -237,6 +240,9 @@ public class ${item.getCodeName()} extends EntityMongo implements Serializable { ...@@ -237,6 +240,9 @@ public class ${item.getCodeName()} extends EntityMongo implements Serializable {
<#assign publicCodeName = prvateCodeName?cap_first > <#assign publicCodeName = prvateCodeName?cap_first >
<#assign jsonfield = defield.getCodeName()?lower_case > <#assign jsonfield = defield.getCodeName()?lower_case >
<#assign defieldano = "" > <#assign defieldano = "" >
<#if prvateCodeName?lower_case != columnname>
<#assign defieldano = "name = \""+columnname+"\"">
</#if>
<#if defield.getDefaultValue()?? && defield.getDefaultValue()!=''> <#if defield.getDefaultValue()?? && defield.getDefaultValue()!=''>
<#assign defieldano = "defaultValue = \""+defield.getDefaultValue()+"\""> <#assign defieldano = "defaultValue = \""+defield.getDefaultValue()+"\"">
</#if> </#if>
...@@ -378,6 +384,9 @@ public class ${item.getCodeName()} extends EntityClient implements Serializable ...@@ -378,6 +384,9 @@ public class ${item.getCodeName()} extends EntityClient implements Serializable
<#assign jsonfield = defield.getCodeName()?lower_case > <#assign jsonfield = defield.getCodeName()?lower_case >
<#if de.getStorageMode()==0><#assign jsonfield = defield.getCodeName()?uncap_first ></#if> <#if de.getStorageMode()==0><#assign jsonfield = defield.getCodeName()?uncap_first ></#if>
<#assign defieldano = "" > <#assign defieldano = "" >
<#if prvateCodeName?lower_case != columnname>
<#assign defieldano = "name = \""+columnname+"\"">
</#if>
<#if defield.getDefaultValue()?? && defield.getDefaultValue()!=''> <#if defield.getDefaultValue()?? && defield.getDefaultValue()!=''>
<#assign defieldano = "defaultValue = \""+defield.getDefaultValue()+"\""> <#assign defieldano = "defaultValue = \""+defield.getDefaultValue()+"\"">
</#if> </#if>
......
...@@ -14,6 +14,11 @@ import java.lang.annotation.Target; ...@@ -14,6 +14,11 @@ import java.lang.annotation.Target;
@Target({ ElementType.FIELD}) @Target({ ElementType.FIELD})
public @interface DEField public @interface DEField
{ {
/**
* 属性名称
* @return
*/
String name() default "";
/** /**
* 是否为数据主键 * 是否为数据主键
* @return * @return
......
...@@ -13,6 +13,7 @@ import org.springframework.cglib.beans.BeanMap; ...@@ -13,6 +13,7 @@ import org.springframework.cglib.beans.BeanMap;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import org.springframework.util.AlternativeJdkIdGenerator; import org.springframework.util.AlternativeJdkIdGenerator;
import java.io.Serializable; import java.io.Serializable;
import org.springframework.util.StringUtils;
import java.util.*; import java.util.*;
public class EntityBase implements Serializable { public class EntityBase implements Serializable {
...@@ -71,14 +72,11 @@ public class EntityBase implements Serializable { ...@@ -71,14 +72,11 @@ public class EntityBase implements Serializable {
public Object get(String field) { public Object get(String field) {
field=field.toLowerCase(); String fieldRealName=DEFieldCacheMap.getFieldRealName(this.getClass(),field);
Hashtable<String,String> keys=DEFieldCacheMap.getFieldKeys(this.getClass().getName()); if(!StringUtils.isEmpty(fieldRealName))
if(keys.containsKey(field)) return getMap().get(fieldRealName);
return getMap().get(keys.get(field));
else if(keys.containsKey(field.replace("_","")))
return getMap().get(keys.get(field.replace("_","")));
else else
return this.extensionparams.get(field); return this.extensionparams.get(field.toLowerCase());
} }
...@@ -90,13 +88,15 @@ public class EntityBase implements Serializable { ...@@ -90,13 +88,15 @@ public class EntityBase implements Serializable {
@JsonAnySetter @JsonAnySetter
public void set(String field, Object value) { public void set(String field, Object value) {
field=field.toLowerCase(); field=field.toLowerCase();
Hashtable<String,String> keys=DEFieldCacheMap.getFieldKeys(this.getClass().getName()); String fieldRealName=DEFieldCacheMap.getFieldRealName(this.getClass(),field);
if(keys.containsKey(field)) if(!StringUtils.isEmpty(fieldRealName)) {
getMap().put(keys.get(field),value); if (value == null)
else if(keys.containsKey(field.replace("_",""))) getMap().put(fieldRealName, null);
getMap().put(keys.get(field.replace("_","")),value); else
getMap().put(fieldRealName, DEFieldCacheMap.fieldValueOf(this.getClass(), fieldRealName, value));
}
else else
this.extensionparams.put(field,value); this.extensionparams.put(field.toLowerCase(),value);
} }
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ TARGET=PSSYSTEM ...@@ -3,6 +3,7 @@ TARGET=PSSYSTEM
</#ibiztemplate> </#ibiztemplate>
package ${pub.getPKGCodeName()}.util.filter; package ${pub.getPKGCodeName()}.util.filter;
import ${pub.getPKGCodeName()}.util.helper.DEFieldCacheMap;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -12,6 +13,8 @@ import lombok.extern.slf4j.Slf4j; ...@@ -12,6 +13,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
...@@ -51,13 +54,15 @@ public class QueryWrapperContext<T> extends SearchContextBase implements ISearch ...@@ -51,13 +54,15 @@ public class QueryWrapperContext<T> extends SearchContextBase implements ISearch
if(ObjectUtils.isEmpty(it_sort)) if(ObjectUtils.isEmpty(it_sort))
return page; return page;
ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
Class<T> type = (Class<T>)parameterizedType.getActualTypeArguments()[0];
while (it_sort.hasNext()) { while (it_sort.hasNext()) {
Sort.Order sort_order = it_sort.next(); Sort.Order sort_order = it_sort.next();
if(sort_order.getDirection()== Sort.Direction.ASC){ if(sort_order.getDirection()== Sort.Direction.ASC){
asc_fieldList.add(sort_order.getProperty()); asc_fieldList.add(DEFieldCacheMap.getFieldColumnName(type,sort_order.getProperty()));
} }
else if(sort_order.getDirection()== Sort.Direction.DESC){ else if(sort_order.getDirection()== Sort.Direction.DESC){
desc_fieldList.add(sort_order.getProperty()); desc_fieldList.add(DEFieldCacheMap.getFieldColumnName(type,sort_order.getProperty()));
} }
} }
......
...@@ -3,10 +3,13 @@ TARGET=PSSYSTEM ...@@ -3,10 +3,13 @@ TARGET=PSSYSTEM
</#ibiztemplate> </#ibiztemplate>
package ${pub.getPKGCodeName()}.util.helper; package ${pub.getPKGCodeName()}.util.helper;
import ${pub.getPKGCodeName()}.util.annotation.DEField;
import org.springframework.util.StringUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Iterator;
import java.util.List; import java.util.List;
/** /**
...@@ -20,103 +23,138 @@ public class DEFieldCacheMap { ...@@ -20,103 +23,138 @@ public class DEFieldCacheMap {
private static Hashtable<String, Hashtable<String,String>> cacheKey = new Hashtable<>(); private static Hashtable<String, Hashtable<String,String>> cacheKey = new Hashtable<>();
private static Object objLock1=new Object(); private static Object objLock1=new Object();
private static Object objLock2=new Object();
private static Object objLock3=new Object();
/** /**
* 将实体对象中的属性存入缓存中 * 将实体对象中的属性存入缓存中
* @param className * @param
* @return * @return
*/ */
public static Hashtable<String,Field> getFieldMap(String className) { public static <T> Hashtable<String,Field> getFieldMap(Class<T> clazz) {
String className=clazz.getName();
if(className.indexOf("_$")>0) if(className.indexOf("_$")>0)
className=className.substring(0, className.lastIndexOf("_$")); className=className.substring(0, className.lastIndexOf("_$"));
if(cacheMap.containsKey(className)) if(cacheMap.containsKey(className))
return cacheMap.get(className); return cacheMap.get(className);
synchronized (objLock1) { synchronized (objLock1) {
if(cacheMap.containsKey(className)) if(cacheMap.containsKey(className))
return cacheMap.get(className); return cacheMap.get(className);
Hashtable<String,Field> result = new Hashtable<String,Field>();
Class clazz = null; List<Field> list=new ArrayList<Field>();
try { Hashtable<String,String> keys=new Hashtable<String,String>();
clazz = Class.forName(className); Field[] fields=clazz.getDeclaredFields();
} for(Field field:fields){
catch (Exception ex) { result.put(field.getName(),field);
cacheMap.put(className, new Hashtable<String,Field>()); list.add(field);
return cacheMap.get(className); keys.put(field.getName().toLowerCase(),field.getName());
}
Hashtable<String,Field> result = cacheMap.get(className);
if (result == null) {
result=new Hashtable<String,Field>();
Field[] fields=clazz.getDeclaredFields();
for(Field field:fields){
result.put(field.getName(),field);
}
cacheMap.put(className, result);
} }
cacheMap.put(className, result);
cacheList.put(className,list);
cacheKey.put(className,keys);
return result; return result;
} }
} }
public static Hashtable<String,Field> getFieldMap(String className) {
if(className.indexOf("_$")>0)
className=className.substring(0, className.lastIndexOf("_$"));
if(cacheMap.containsKey(className))
return cacheMap.get(className);
Class clazz = null;
try {
clazz = Class.forName(className);
return getFieldMap(clazz);
}
catch (Exception ex) {
cacheMap.put(className, new Hashtable<String,Field>());
return cacheMap.get(className);
}
}
/** /**
* 从缓存中查询实体对象属性列表 * 从缓存中查询实体对象属性列表
* @param className * @param
* @return * @return
*/ */
public static List<Field> getFields(String className) { public static <T> List<Field> getFields(Class<T> clazz) {
String className=clazz.getName();
if(className.indexOf("_$")>0) if(className.indexOf("_$")>0)
className=className.substring(0, className.lastIndexOf("_$")); className=className.substring(0, className.lastIndexOf("_$"));
if(cacheList.containsKey(className)) if(cacheList.containsKey(className))
return cacheList.get(className); return cacheList.get(className);
else{
DEFieldCacheMap.getFieldMap(clazz);
return cacheList.get(className);
}
}
synchronized (objLock2) { public static List<Field> getFields(String className) {
if (cacheList.containsKey(className)) if(className.indexOf("_$")>0)
return cacheList.get(className); className=className.substring(0, className.lastIndexOf("_$"));
Hashtable<String,Field> fieldmap=DEFieldCacheMap.getFieldMap(className); if(cacheList.containsKey(className))
Iterator it = fieldmap.keySet().iterator(); return cacheList.get(className);
List<Field> list=new ArrayList<Field>(); else{
while(it.hasNext()) { DEFieldCacheMap.getFieldMap(className);
Object key = it.next(); return cacheList.get(className);
if(fieldmap.get(key.toString())!=null)
list.add(fieldmap.get(key.toString()));
}
cacheList.put(className,list);
return list;
} }
} }
/** /**
* 从缓存中查询实体对象属性列表 * 从缓存中查询实体对象属性列表
* @param className * @param
* @return * @return
*/ */
public static Hashtable<String,String> getFieldKeys(String className) { public static <T> Hashtable<String,String> getFieldKeys(Class<T> clazz) {
String className=clazz.getName();
if(className.indexOf("_$")>0) if(className.indexOf("_$")>0)
className=className.substring(0, className.lastIndexOf("_$")); className=className.substring(0, className.lastIndexOf("_$"));
if(cacheKey.containsKey(className)) if(cacheKey.containsKey(className))
return cacheKey.get(className); return cacheKey.get(className);
else{
DEFieldCacheMap.getFieldMap(clazz);
return cacheKey.get(className);
}
}
synchronized (objLock3) { public static <T> String getFieldRealName(Class<T> clazz,String fieldname) {
if (cacheKey.containsKey(className)) fieldname=fieldname.toLowerCase();
return cacheKey.get(className); Hashtable<String,String> keys=DEFieldCacheMap.getFieldKeys(clazz);
Hashtable<String,Field> fieldmap=DEFieldCacheMap.getFieldMap(className); if(keys.containsKey(fieldname))
Iterator it = fieldmap.keySet().iterator(); return keys.get(fieldname);
Hashtable<String,String> list=new Hashtable<String,String>(); else if(keys.containsKey(fieldname.replace("_","")))
while(it.hasNext()) { return keys.get(fieldname.replace("_",""));
Object key = it.next(); else
list.put(key.toString().toLowerCase(),key.toString()); return "";
} }
cacheKey.put(className,list);
return list; public static <T> Field getField(Class<T> clazz,String fieldname) {
String fieldRealName=DEFieldCacheMap.getFieldRealName(clazz,fieldname);
if(!StringUtils.isEmpty(fieldRealName))
return DEFieldCacheMap.getFieldMap(clazz).get(fieldRealName);
else
return null;
}
public static <T> String getFieldColumnName(Class<T> clazz,String fieldname) {
Field field = DEFieldCacheMap.getField(clazz,fieldname);
if(field!=null) {
DEField deField=field.getAnnotation(DEField.class);
if(deField!=null&&deField.name()!=null)
return deField.name();
}
return fieldname;
}
public static <T> Object fieldValueOf(Class<T> clazz,String fieldname,Object fieldValue) {
if(fieldValue==null)
return null;
Object resultValue=fieldValue;
Field field = DEFieldCacheMap.getField(clazz,fieldname);
if(field!=null) {
Class<?> type=field.getType();
resultValue = DataObject.objectValueOf(type,fieldValue);
} }
return resultValue;
} }
} }
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册