博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发利器mapstruct
阅读量:5170 次
发布时间:2019-06-13

本文共 2031 字,大约阅读时间需要 6 分钟。

背景:

       在业务代码中,会出现很多dto之间的相互转换,就是两个dto属性的各种get,set,会造成大量的冗余代码,所以出现了一些工具,比如Spring中的beanUtil,但是beanutil是运行时处理的,性能较差,所以出现了一款利器,mapstruct,它是编译生效的,类似lombok,所以性能大大提升

 

maven导入:

org.mapstruct
mapstruct
1.2.0.Final
org.mapstruct
mapstruct-processor
1.2.0.Final

建立两个类,一个UserEntity,一个UserDTO

@Datapublic class UserEntity {    private String name;    private String password;    private Integer age;    private Date birthday;    private String sex;}
@Datapublic class UserVO {    private String name;    private String age;    private String birthday;    private String gender;}

接下来是关键的映射,UserMapper接口

@Mapperpublic interface UserMapper {    UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);    /**     * 1、entity与vo中属性名相同时候默认映射,(比如name),属性名相同属性类型不同也会映射,(比如birthday,一个Data,一个String)     * 2、entity与vo中属性名不同的,需要通过@Mapping明确关系来形成映射(如sex对应gender)     * 3、无映射关系属性被忽略(如UserEntity的password)     */    @Mappings({            @Mapping(target = "gender", source = "sex"),        })    UserVO entityToVO(UserEntity entity);}

测试代码

public class UserTest {    public static void main(String[] args)  {        UserEntity userEntity = new UserEntity();        userEntity.setAge(1);        userEntity.setName("snow");        userEntity.setPassword("123");        userEntity.setSex("男");        userEntity.setBirthday(new Date());        UserVO userVO = UserMapper.INSTANCE.entityToVO(userEntity);        System.out.println(userVO);        System.out.println("=================");        System.out.println(userEntity);    }}

结果如下:

UserVO(name=snow, age=1, birthday=18-5-11 下午9:23, gender=男)=================UserEntity(name=snow, password=123, age=1, birthday=Fri May 11 21:23:34 CST 2018, sex=男)

以上是简单举例,参考https://blog.csdn.net/OO570741825/article/details/78530022,在它基础上做了些修正

 

转载于:https://www.cnblogs.com/team42/p/9026666.html

你可能感兴趣的文章
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>