目录
pom.xml引入相应Maven依赖包
BeanCopyUtils.java
工具类验证用实体信息构造
BankCard.java
UserDto.java
UserInputDto.java
UserOutputDto.java
工具类客户端调用
Client.java
工具类客户端调用控制台输出
com.alibaba
fastjson
1.2.62
commons-collections
commons-collections
3.2.2
package com.liubin.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.parser.Feature;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 〈功能详细描述〉
*
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class BeanCopyUtils {
/**
* 实体值copy (参数必须同名,类型可不同)
*
* @param source 源对象
* @param clazz 目标对象类型
* @param 目标对象类型
* @return 目标对象
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public static T copyEntity(Object source, Class clazz) {
if (source == null) {
return null;
}
return JSON.parseObject(JSON.toJSONString(source), clazz, Feature.OrderedField);
}
/**
* 将源List sourceList 转化为目标List targetList
*
* @param sourceList 源List sourceList
* @param clazz 目标List targetList元素类型
* @param 源List sourceList元素类型
* @param 目标List targetList元素类型
* @return 目标List targetList
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public static List copyList(List sourceList, Class clazz) {
if (CollectionUtils.isEmpty(sourceList)) {
return new ArrayList<>();
}
return JSONArray.parseArray(JSON.toJSONString(sourceList), clazz);
}
}
package com.liubin.entity;
/**
* 〈一句话功能简述〉银行卡信息实体类
* 〈功能详细描述〉
*
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class BankCard {
/**
* 银行卡id
*/
private int id;
/**
* 银行名称
*/
private String bankName;
/**
* 银行卡账号
*/
private String account;
/**
* 银行卡密码
*/
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("BankCard{");
sb.append("id=").append(id);
sb.append(", bankName='").append(bankName).append('\'');
sb.append(", accout='").append(account).append('\'');
sb.append(", pwd='").append(pwd).append('\'');
sb.append('}');
return sb.toString();
}
}
package com.liubin.entity;
import java.util.List;
/**
* 〈一句话功能简述〉用户Dto类
* 〈功能详细描述〉
*
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class UserDto {
/**
* 用户名
*/
private String userName;
/**
* 年龄
*/
private int age;
private String gender;
/**
* 银行卡信息
*/
private List bankCards;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public List getBankCards() {
return bankCards;
}
public void setBankCards(List bankCards) {
this.bankCards = bankCards;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("UserDto{");
sb.append("userName='").append(userName).append('\'');
sb.append(", age=").append(age);
sb.append(", gender='").append(gender).append('\'');
sb.append(", bankCards=").append(bankCards);
sb.append('}');
return sb.toString();
}
}
package com.liubin.entity;
import java.util.List;
/**
* 〈一句话功能简述〉用户UserInputDto类
* 〈功能详细描述〉
*
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class UserInputDto {
/**
* 用户名
*/
private String userName;
/**
* 银行卡信息
*/
private List bankCards;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public List getBankCards() {
return bankCards;
}
public void setBankCards(List bankCards) {
this.bankCards = bankCards;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("UserInputDto{");
sb.append("userName='").append(userName).append('\'');
sb.append(", bankCards=").append(bankCards);
sb.append('}');
return sb.toString();
}
}
package com.liubin.entity;
import java.util.List;
/**
* 〈一句话功能简述〉用户UserOutputDto类
* 〈功能详细描述〉
*
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class UserOutputDto {
/**
* 用户名
*/
private String userName;
/**
* 年龄
*/
private int age;
/**
* 性别
*/
private String gender;
/**
* 银行卡信息
*/
private List bankCards;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public List getBankCards() {
return bankCards;
}
public void setBankCards(List bankCards) {
this.bankCards = bankCards;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("UserDto{");
sb.append("userName='").append(userName).append('\'');
sb.append(", age=").append(age);
sb.append(", gender='").append(gender).append('\'');
sb.append(", bankCards=").append(bankCards);
sb.append('}');
return sb.toString();
}
}
package com.liubin;
import com.liubin.entity.BankCard;
import com.liubin.entity.UserDto;
import com.liubin.entity.UserInputDto;
import com.liubin.entity.UserOutputDto;
import com.liubin.utils.BeanCopyUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 〈一句话功能简述〉BeanCopyUtils客户端调用
* 〈功能详细描述〉
*
* @author 刘斌
* @date 2020/3/6
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class Client {
public static void main(String[] args) {
// 源实体对象(里面包含List)
UserDto userDto = getUserInfo();
// 只是获取部分源实体对象的值
UserInputDto userInputDto = BeanCopyUtils.copyEntity(userDto, UserInputDto.class);
// 只是获取全部源实体对象的值
UserOutputDto userOutputDto = BeanCopyUtils.copyEntity(userDto, UserOutputDto.class);
System.out.println("userInputDto" + userInputDto);
System.out.println("============================");
System.out.println("userOutputDto" + userOutputDto);
// 源实体对象就是一个List
List userDtoList = getUserInfos();
List userInfoList = BeanCopyUtils.copyList(userDtoList, UserDto.class);
System.out.println("============================");
System.out.println("userDtoList" + userDtoList);
System.out.println("userInfoList" + userInfoList);
}
private static UserDto getUserInfo() {
UserDto userDto = new UserDto();
userDto.setUserName("tom");
userDto.setAge(20);
userDto.setGender("man");
BankCard bankCard = new BankCard();
bankCard.setId(123456789);
bankCard.setAccount("33456789");
bankCard.setBankName("招商银行");
bankCard.setPwd("123456");
List bankCards = new ArrayList<>();
bankCards.add(bankCard);
userDto.setBankCards(bankCards);
return userDto;
}
private static List getUserInfos() {
UserDto userDto = getUserInfo();
List userDtoList = new ArrayList<>();
userDtoList.add(userDto);
return userDtoList;
}
}