一、首先導入相關maven包
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
二、編寫一個JavaBean,通過BeanUtils底層的getter和setter方法進行轉換成對象
import java.io.Serializable;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* Description:
* Date: 2019/9/12
* Time: 10:38
*/
public class ElasticsearchQuery implements Serializable {
private static final long serialVersionUID = 1L;
private String index;
private Map<String, Object> fuzzy;
private String timeField;
private String startTime;
private String endTime;
private String orderName;
private String sortOrder;
private int size;
private boolean flag;
private Long pageNum = 1L;
private Long pageSize = 10L;
public String getIndex() {
return index;
}
public void setIndex(String index) {
this.index = index;
}
public Map<String, Object> getFuzzy() {
return fuzzy;
}
public void setFuzzy(Map<String, Object> fuzzy) {
this.fuzzy = fuzzy;
}
public String getTimeField() {
return timeField;
}
public void setTimeField(String timeField) {
this.timeField = timeField;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
public String getSortOrder() {
return sortOrder;
}
public void setSortOrder(String sortOrder) {
this.sortOrder = sortOrder;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
三、編寫一個反射工具轉換類
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* Description:
* Date: 2019/9/16
* Time: 10:02
*/
public class ReflectionUtils {
/**
* 將一個Map集合中的數據封裝到指定對象bean中
* @param beanClass
* @param properties
* @param <T>
* @return
*/
public static <T> T populate(Class<T> beanClass, Map<String, ? extends Object> properties){
T t = null;
try {
t = beanClass.newInstance();
BeanUtils.populate(t, properties);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
public static void main(String[] args) throws Exception{
Map<String, Object> map = new HashMap<>();
map.put("index","api_logs");
Map<String,Object> fuzzy = new HashMap<>();
fuzzy.put("uri","userLogin");
fuzzy.put("headers","body");
map.put("fuzzy",fuzzy);
map.put("timeField","createTime");
map.put("size",10);
map.put("pageNum",1);
map.put("flag",true);
ElasticsearchQuery query = populate(ElasticsearchQuery.class,map);
System.out.println(query.toString());
}
}