最近写代码,总是需要把一个对象转换一下给前端使用的对象,比如,前端某个属性是一个字符串,是逗号拼接的,我回传给前端是时候,需要新写一个对象,包含这个字符串处理后的字符串数组,然后要对其他属性赋值,很是麻烦,代码不美观,说不定可能还遗漏某个属性,所以我想起之前的一个工具类,但是找不到了,所以在网上找了一下,最后总结成自己的,希望对大家有所帮助!先放效果图,欢迎点赞和评论。。。
Person类
package com.kethink.springboot.object;
import java.util.Date;
/**
* @Description :
* @Author: xuxiaojun
* @Date: Created in 2020/5/26 16:32
*/
public class Person {
private static final long serialVersionUID = 1L;
private String id;
private String username;
private String password;
private Integer age;
private Double height;
private Date createtime;
private Date updatetime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getHeight() {
return height;
}
public void setHeight(Double height) {
this.height = height;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
@Override
public String toString() {
return "Person{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", height=" + height +
", createtime=" + createtime +
", updatetime=" + updatetime +
'}';
}
}
PersonVO 类
package com.kethink.springboot.object;
import java.util.Arrays;
import java.util.Date;
/**
* @Description :
* @Author: xuxiaojun
* @Date: Created in 2020/5/26 16:35
*/
public class PersonVO extends Person {
private String[] childrenName;
private Date birthday;
public String[] getChildrenName() {
return childrenName;
}
public void setChildrenName(String[] childrenName) {
this.childrenName = childrenName;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "PersonVO{" +
"id='" + super.getId() + '\'' +
", username='" + super.getUsername() + '\'' +
", password='" + super.getPassword() + '\'' +
", age=" + super.getAge() +
", height=" + super.getHeight() +
", createtime=" + super.getCreatetime() +
", updatetime=" + super.getUpdatetime() +
", childrenName=" + Arrays.toString(childrenName) +
", birthday=" + birthday +
'}';
}
}
PersonDO类
package com.kethink.springboot.object;
import java.util.Date;
/**
* @Description :
* @Author: xuxiaojun
* @Date: Created in 2020/5/26 17:15
*/
public class PersonDO {
private static final long serialVersionUID = 1L;
private String username;
private String password;
private Integer age;
private Double height;
private Date createtime;
private Date updatetime;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getHeight() {
return height;
}
public void setHeight(Double height) {
this.height = height;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
@Override
public String toString() {
return "PersonDO{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", height=" + height +
", createtime=" + createtime +
", updatetime=" + updatetime +
'}';
}
}
工具类:ConvertUtils.java
package com.kethink.springboot.object;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.*;
/**
* @Description :
* @Author: xuxiaojun
* @Date: Created in 2020/5/26 16:37
*/
public class ConvertUtils {
/**
* Bean 转成 Bean , 属性不必对应
* @param srcObj
* @param destObj
*/
public static void copyBeanToBean(Object srcObj,Object destObj){
Map srcMap = new HashMap();
Field[] srcFields = srcObj.getClass().getDeclaredFields();
for (Field srcField : srcFields) {
try {
//去除static final属性(serialVersionUID)
if (Modifier.isFinal(srcField.getModifiers())){
continue;
}
srcField.setAccessible(true);
srcMap.put(srcField.getName(), srcField.get(srcObj)); //获取属性值
} catch (Exception e) {
e.printStackTrace();
}
}
Field[] destFields = getAllFields(destObj.getClass());
for (Field destField : destFields) {
destField.setAccessible(true);
if (srcMap.get(destField.getName()) == null) {
continue;
}
try {
destField.set(destObj, srcMap.get(destField.getName())); //给属性赋值
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* Map 转成 Bean , 属性不必对应
* @param srcMap
* @param destObj
*/
public static void copyMapToBean(Map srcMap,Object destObj){
Field[] destFields = getAllFields(destObj.getClass());
for (Field destField : destFields) {
destField.setAccessible(true);
if (srcMap.get(destField.getName()) == null) {
continue;
}
try {
destField.set(destObj, srcMap.get(destField.getName())); //给属性赋值
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 获取该类的属性及父类属性
* @param clazz
* @return
*/
private static Field[] getAllFields(Class clazz) {
List fieldList = new ArrayList<>();
while (clazz != null){
fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
clazz = clazz.getSuperclass();
}
Field[] fields = new Field[fieldList.size()];
return fieldList.toArray(fields);
}
}
测试类:TestCopy.java
package com.kethink.springboot.object;
import java.util.*;
/**
* @Description :
* @Author: xuxiaojun
* @Date: Created in 2020/5/26 16:42
*/
public class TestCopy {
public static void main(String[] args) {
HashMap hashMap = new HashMap<>();
hashMap.put("id",UUID.randomUUID().toString());
hashMap.put("username","xxj01");
hashMap.put("password","12301");
hashMap.put("age",28);
hashMap.put("height",1.70);
hashMap.put("createtime",new Date());
hashMap.put("updatetime",new Date());
Person p = new Person();
p.setId(UUID.randomUUID().toString());
p.setUsername("xxj");
p.setPassword("123");
p.setAge(28);
p.setHeight(1.70);
p.setCreatetime(new Date());
p.setUpdatetime(new Date());
PersonVO personVO = new PersonVO();
PersonDO personDO = new PersonDO();
try {
System.out.println(p.toString());
ConvertUtils.copyBeanToBean(p,personVO);
System.out.println(personVO.toString());
ConvertUtils.copyBeanToBean(p,personDO);
System.out.println(personDO.toString());
/* System.out.println("--------------------------------------");
ConvertUtils.copyBeanToBean(hashMap,personVO);
System.out.println(personVO.toString());
ConvertUtils.copyBeanToBean(hashMap,personDO);
System.out.println(personDO.toString());
ConvertUtils.copyMapToBean(hashMap,personVO);
System.out.println(personVO.toString());
ConvertUtils.copyMapToBean(hashMap,personDO);
System.out.println(personDO.toString());*/
}catch (Exception e){
e.printStackTrace();
}
}
}