/**
* 根据属性名获取属性值
* @param fieldName
* @param object
* @param <T>
* @return
*/
public static <T> T getFieldValueByFieldName(String fieldName, Object object) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
//设置对象的访问权限,保证对private的属性的访问
field.setAccessible(true);
return (T)field.get(object);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* sql语句中where都是=这种判断时,如id=#{bean.id} and createTime=#{bean.createTime},
* 此时ES按这种条件查询,就可以使用该方法
*
* @param model
* @param map
*/
public static void setKeyValue(Object model, Map<String, String> map) {
try{
String get = "get";
// 获取实体类的所有属性,返回Field数组
Field[] field = FieldUtils.getAllFields(model.getClass());
// 遍历所有属性
for (Field aField : field) {
// 获取属性的名字
String key = aField.getName();
// 将属性的首字符大写,方便构造get,set方法
String name = key.substring(0, 1).toUpperCase() + key.substring(1);
// 获取属性的类型
String type = aField.getGenericType().toString();
// 如果type是类类型,则前面包含"class ",后面跟类名
if (StringUtils.equals(type, String.class.toString())) {
Method m = model.getClass().getMethod(get + name);
// 调用getter方法获取属性值
String value = (String) m.invoke(model);
if (StringUtils.isNotBlank(value)){
map.put(key, value);
}
}
if (StringUtils.equals(type, Integer.class.toString())) {
Method m = model.getClass().getMethod(get + name);
Integer value = (Integer) m.invoke(model);
if (null != value){
map.put(key, String.valueOf(value));
}
}
if (StringUtils.equals(type, Long.class.toString())) {
Method m = model.getClass().getMethod(get + name);
Long value = (Long) m.invoke(model);
if (null != value){
map.put(key, String.valueOf(value));
}
}
if (StringUtils.equals(type, Short.class.toString())) {
Method m = model.getClass().getMethod(get + name);
Short value = (Short) m.invoke(model);
if (null != value){
map.put(key, String.valueOf(value));
}
}
if (StringUtils.equals(type, Double.class.toString())) {
Method m = model.getClass().getMethod(get + name);
Double value = (Double) m.invoke(model);
if (null != value){
map.put(key, String.valueOf(value));
}
}
if (StringUtils.equals(type, Boolean.class.toString())) {
Method m = model.getClass().getMethod(get + name);
Boolean value = (Boolean) m.invoke(model);
if (null != value){
map.put(key, String.valueOf(value));
}
}
if (StringUtils.equals(type, Date.class.toString())) {
Method m = model.getClass().getMethod(get + name);
Date value = (Date) m.invoke(model);
if (null != value){
map.put(key, DateUtils.formatDate(value, DateUtils.yyyy_MM_dd_HH_mm_ss_SSS));
}
}
if (StringUtils.equals(type, BigDecimal.class.toString())) {
Method m = model.getClass().getMethod(get + name);
BigDecimal value = (BigDecimal) m.invoke(model);
if (null != value){
map.put(key, String.valueOf(value));
}
}
}
} catch (Throwable t){
throw new RuntimeException(t);
}
}
还没有评论,来说两句吧...