解决spring自带beancopy缺陷之Orika

需求:用spring提供的beancopy不能满足我们的需求,DO,VO,DTO之间的转化

例如 vo中包含time String属性和list<VOA>属性

而    do中包含time Date属性和list<DOA>属性

类VOA和类DOA类不同而字段属性都相同

但是使用spring自带的

BeanUtils.copyProperties(do, vo);会产生相同类型可以赋值而名字相同但是类型不同的不能赋值

所以改进的办法是使用Orika

在maven中引入依赖

核心代码:

MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();

MapperFacade mapper = mapperFactory.getMapperFacade();

VO vos = mapper.map(dos, VO.class);

此时dos中的值与vos中的值一样

虽然dos与vos中的属性的类型不同名字相同但是依旧可以赋值

实例代码:

public static void main(String [] args)

{

    DO dos = new DO();

    dos.setId("1");

    dos.setDate(new Date());

    List<DOA> list  =new ArrayList<DOA>();

    for(int i=0;i<3;i++) {

        DOA doa = new DOA();

        doa.setAge(i + "");

        doa.setName(i + "");

        list.add(doa);

    }

    dos.setList(list);

    MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();

    MapperFacade mapper = mapperFactory.getMapperFacade();

    VO vos = mapper.map(dos, VO.class);

    System.out.println(vos);

}

控制台打印:

VO(id=1, date=Fri Dec 28 15:42:14 CST 2018, list=[VOA(name=0, age=0), VOA(name=1, age=1), VOA(name=2, age=2)])

注意VO类

@Data

public class VO {

    private String id;

    private String date;

    private List<VOA> list;

}

而DO类

@Data

public class DO {

    private String id;

    private Date date;

    private List<DOA> list;

}

Orika的使用姿势 - 简书

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容