解决spring自带beancopy缺陷之Orika

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

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

而    do中包含time Date属性和list属性

类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 list  =new ArrayList();

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

}

而DO类

@Data

public class DO {

    private String id;

    private Date date;

    private List list;

}

Orika的使用姿势 -

你可能感兴趣的:(解决spring自带beancopy缺陷之Orika)