告别set和get,两大利器轻松搞定model转换

 

该方式相对手写方法来说,效率已经有了很大的提升,但还是有进一步的提升空间(下文会介绍)。而且该种方式维护性较差,当需要修改某个属性名称或者属性类型时,对应的set和get方法以及toString都需要调整。

场景二:大部分时候,我们都是基于当前流行的微服务架构和SSM(Spring+Spring MVC + Mybatis)框架进行开发,这时候我个人经常遇到一个问题就是model的转换问题。

不同层会有不同的model,比如DAO层的model,service层的model,对外API接口的model,还有更上层的controller层的model以及提供给前端的View model。

为了能够是接口正常调用,我们不得不处理这些model的转换,没有一个称手的工具,我们只能手写转换类,通过一个又一个的set和get方法来完成model的转换。

有时候,我们在测试接口的时候发现有些属性没有值,调试半天才发现,是因为其中一个属性忘记写set方法了。我们明知道这些工作并不需要太多的思考,但是却不得不小心翼翼的对待。

那么,是否有更加优雅的处理方式,请看下文介绍

Lombok

这是一个插件,能够很好的解决场景一中的难题

下载安装

我用的IDE是Intellij idea,可以在Preferences->Plugins中找到相应的插件安装并重启即可。

该插件的实现已经放在github上,有兴趣可以到https://github.com/mplushnikov/lombok-intellij-plugin查看

lombok使用

添加jar包依赖

在你需要的项目的pom文件中添加如下的依赖

 <dependency>  <groupId>org.projectlombok</groupId>  <artifactId>lombok</artifactId>  <version>1.16.18</version>  </dependency> 
编写model
 package com.jackie.wowjava.best.practice.java.orika.model;  import java.util.Date;  public class AuthorDTO {   private String name;      private Date birthday; } 
添加需要的注解

Lombok可以通过注解的方式实现你需要添加的方法,比如你需要添加这些属性对应的set方法,那么只要在model类上添加注解@Setter即可,相应的,如果需要get方法添加@Getter

此外还有@ToString@NoArgsConstructor@AllArgsConstructor等方便使用的注解。

事实上,我们真的只需要这样添加注解的方式,就能够实现轻松调用set和get方法的需要。这样,以后如果model的属性有改变,我们只需要直接改相应的属性即可,不再需要做任何一点多余的操作。

将注解还原为具体方法

Lombok为我们提供可以将对应注解还原为对应方法的功能。

点击Refactor->Delombok选择想还原的方法即可

是不是很好用?

Orika

Orika是一个简单快速的model拷贝框架。

Orika使用

添加jar包依赖

在需要使用的项目的pom文件中添加如下依赖

 <dependency>  <groupId>ma.glasnost.orika</groupId>  <artifactId>orika-core</artifactId>  <version>1.5.2</version>  </dependency> 
创建两个需要转换的model

BookEntity

 package com.jackie.wowjava.best.practice.java.orika.model;  import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter;  import java.util.Date;  @Setter @Getter @AllArgsConstructor @NoArgsConstructor public class BookEntity {   private String bookName;      private String authorName;      private Date authorBirthday;      private String bookInformation;      private Integer type;  }  

BookDTO


                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信