利用fastJson实现Object、List对象值拷贝工具类【BeanCopyUtils】

目录

pom.xml引入相应Maven依赖包

BeanCopyUtils.java

工具类验证用实体信息构造

BankCard.java

UserDto.java

UserInputDto.java

UserOutputDto.java

工具类客户端调用

Client.java

工具类客户端调用控制台输出

 


pom.xml引入相应Maven依赖包


    com.alibaba
    fastjson
    1.2.62



    commons-collections
    commons-collections
    3.2.2

BeanCopyUtils.java

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);
    }
}

工具类验证用实体信息构造

BankCard.java

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(); } }

UserDto.java

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(); } }

UserInputDto.java

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(); } }

UserOutputDto.java

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(); } }

工具类客户端调用

Client.java

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; } }

工具类客户端调用控制台输出

利用fastJson实现Object、List对象值拷贝工具类【BeanCopyUtils】_第1张图片

 

 

 

你可能感兴趣的:(Java工具类)