前言
ModelMapper是一个从对象到对象(object-to-object)的框架,能将Java Bean(Pojo)对象从一种表现形式转化为另一种表现形式。它采用“通过约定来配置”的方式,自动匹配不同的对象映射,同时具备满足某些特殊需求的高级功能。
参考地址:https://github.com/bigbeef/cppba-modelmapper
开源地址:https://github.com/bigbeef
个人博客:http://blog.cppba.com
在实际开发中,我们遇到过这样的问题:
我们数据库有这样两张表User和City,映射的实体如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public class User {
private Long id;
private String userName;
private String password;
private Integer gender;//0-未知,1-男,2-女
private Long cityId;
//省去getter setter tostring constructor
}
public class City {
private Long id;
private String name;
private Long parentId;
//省去getter setter tostring constructor
}
我们的restful API有这样一个接口(/user/getInfo),大家想一想我们的接口返回是什么?
1 | public class UserVo { |
假如我们返回这样一个实体,我们应该怎么去生成这个实体呢?
一般人是这么做的:
1 | public class Main { |
这种办法虽然能实现,但是如果UserVO有100个属性怎么办,一个一个set不是会设置到天荒地老?
接下来给大家介绍一个第三方jar包modelmapper,看看他的神器。
引入maven
1 | <dependency> |
改造UserVo
1 | public class UserVo { |
编写测试
1 | public class Main { |
运行结果
注意
如果user转userVO时,两个类属性名都相同,就没必要写自定义映射规则。
如果VO属性很多,也不用像传统一样傻傻的一个一个赋值,因为属性名相同占多数,属性名不相同才需要自定义映射规则。