今天小編給大家分享一下Map與JavaBean相互轉換的工具類怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
使用范圍:JavaBean類對象的屬性不能是數組、List、Set、Map
public class MapBeanUtil {
/**
* JavaBean轉Map
* @param obj
* @return
*/
public static Map<String, Object> bean2Map(Object obj) {
Map<String, Object> map = new LinkedHashMap<>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
Object value = null;
try {
value = field.get(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
if (value == null){
value = "";
}
map.put(fieldName, value);
}
return map;
}
/**
* Map轉JavaBean
* @param clazz
* @param map
* @param <T>
* @return
*/
public static <T> T map2Bean(final Class<T> clazz, final Map<String, ? extends Object> map) {
if (map == null) {
return null;
}
T res = null;
try {
res = clazz.getDeclaredConstructor().newInstance();
//獲取到所有屬性,不包括繼承的屬性
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
//獲取字段的修飾符
int mod = field.getModifiers();
if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
continue;
}
//設置對象的訪問權限
field.setAccessible(true);
//根據屬性名稱去map獲取value
if(map.containsKey(field.getName())) {
//給對象賦值
field.set(res, map.get(field.getName()));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
public static void main(String[] args) throws Exception {
HashMap<String, Object> map = new HashMap<>();
map.put("id", 1001);
map.put("username", "zhangsan");
map.put("password", "123456");
map.put("nickname", "張三");
map.put("email", "369950806@qq.com");
map.put("gender", true);
map.put("birth", LocalDate.now());
map.put("avatar", "/aa/bb/ab.jpg");
map.put("role", "VIP");
map.put("status", (byte) 1);
map.put("salt", "ldfkasjghweoiq324");
map.put("createTime", LocalDateTime.now());
map.put("updateTime", LocalDateTime.now());
User user = map2Bean(User.class, map);
System.out.println(user);
Map<String, Object> res = bean2Map(user);
System.out.println(map);
}
}User類的代碼:
public class User {
private Integer id;
private String username;
private String password;
private String nickname;
private String email;
private Boolean gender;
private LocalDate birth;
private String avatar;
private String role;
private Byte status;
private String salt;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}以上就是“Map與JavaBean相互轉換的工具類怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。