BeanCopier的简单使用

BeanCopier的简单使用BeanCopier 的简单使用 cglib 包下的一个类 简单栗子 创建实例 BeanCopierco BeanCopier create source getClass target getClass false Copy 操作 copier copy person1 person2 null 注意到 第三个参数 userConve

BeanCopier的简单使用

cglib包下的一个类.

简单栗子

// 创建实例. BeanCopier copier = BeanCopier.create(source.getClass(), target.getClass(), false); // Copy操作 copier.copy(person1, person2, null);

注意到:

第三个参数userConverter,是否开启Convert,默认BeanCopier只会做同名,同类型属性的copier,否则就会报错. 

举个栗子:在两对象复制过程中,难免会有某些字段属性名相同,但类型不同的情况,例如 Date time,String time, long time.这三种,在转换的时候如何处理。就需要自己写方法对相应的类型进行修改.

简单案例:

public class Test02 { 
    public static void main(String[] args) { Person1 p1 = new Person1(); Person2 p2 = new Person2(); // 给p1赋值 p1.setName("鲁智深"); p1.setBirthday(new Date(0L)); BeanCopier copier = BeanCopier.create(Person1.class, Person2.class, true); // 根据需求编写的DateConverter类, 需要实现Converter接口. copier.copy(p1, p2, new DateConverter()); System.out.println(p1); System.out.println(p2); } } ---------- import org.springframework.cglib.core.Converter; import java.text.SimpleDateFormat; import java.util.Date; public class DateConverter implements Converter { 
    @Override public Object convert(Object value, Class target, Object context) { // a.isAssignableFrom(b), 查资料:即a是b的父类或接口 || a和b为同一个类或同一个接口 则返回true. // SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(value), 设置pattern并转换时间格式. return value.getClass().isAssignableFrom(Date.class) ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(value) : value; } } ---------- import lombok.Data; @Data public class Person1 { 
    private String name; private Date birthday; } ---------- import lombok.Data; @Data public class Person2 { 
    private String name; private String birthday; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223930.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:06
下一篇 2026年3月17日 下午1:06


相关推荐

  • 多重比较法-LSD[通俗易懂]

    多重比较法-LSD[通俗易懂]总第174篇/张俊红前面我们讲了方差分析,方差分析主要是用于多组均值比较的,方差分析的结果是多组均值之间是否有显著性差异,但是这个显著性差异是整体的显著性差异,可是我们并…

    2022年4月28日
    70
  • java 8函数式编程pdf 百度云盘链接

    链接:https://pan.baidu.com/s/1OPd3Cf7NVcxBOguDjWavRw提取码:wakt相关总结可以关注我的博客

    2022年4月12日
    147
  • Vue(8)列表渲染v-for[通俗易懂]

    Vue(8)列表渲染v-for[通俗易懂]循环在模板中可以用v-for指令来循环数组,对象等。循环数组我们可以用v-for指令基于一个数组来渲染一个列表。v-for指令需要使用iteminitems形式的特殊语法,其中it

    2022年7月31日
    9
  • 变量以及数据类型_数据类型定义

    变量以及数据类型_数据类型定义变量以及数据类型变量的相关概念为什么需要变量变量的介绍概念变量使用的基本步骤变量使用注意事项变量的数据类型注意:数据类型相关整型:基本介绍整数的类型整型的使用细节浮点类型基本介绍浮点类型说明一下:浮点型使用细节字符类型基本介绍字符类型使用细节字符类型本质探讨布尔类型基本介绍变量的相关概念为什么需要变量不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。如下代码:voidmain(){ inta=1;//定义了一个整型变量,取名为a,并赋值为1(强数据类型语言) int

    2022年10月21日
    6
  • suse linux rpm 安装

    suse linux rpm 安装安装rpm包时遇到error:Faileddependencies:错误在linux下安装rpm包时经常会遇到下面这个问题:error:Faileddependencies:……………………………………………..省略号表示安装此rpm缺少的包。遇到此问题时可以在安装rpm包命令的后面加两个参数,如:

    2022年5月6日
    41
  • 为什么大家都用i标签<i></i>用作小图标?[通俗易懂]

    为什么大家都用i标签<i></i>用作小图标?[通俗易懂]用<i>元素做图标在语义上是不正确的(虽然看起来像icon的缩写);<i>比<span>短,但gzip后差异很小,不过打字可以少按三个键;多数

    2022年8月2日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号