什么是样板代码
样板代码就是那些和主要逻辑无关,却又不得不写的代码.比如一段常见的实体类映射代码:
public User toUser(UserAddr addr, UserInfo info) {
User user = new User();
user.setAddr( addr.getAddress() );
user.setCountry( addr.getCountry() );
user.setCity( addr.getCity() );
user.setName( info.getNameCn() );
user.setAge( info.getAge() );
return user;
}
我们想把某个对象的属性赋值给另一个对象时,不可避免的要写上一大堆get/set之类的操作.就算使用BeanUtils.copyProperties()方法,也只能消除同名属性的get/set操作.那有没有一种方法,可以完全消除这种样板代码呢?有的.
使用mapstruct的效果
先不说怎么用,咱们先看看效果,觉得有用,咱们再往下看.首先,写一个映射接口
@Mapper(componentModel = "spring")
public interface UserDOMapper {
@Mapping(source = "info.nameCn",target = "name")
@Mapping(source = "addr.address",target = "addr")
User toUser(UserAddr addr, UserInfo info);
}
然后就可以使用了
@Autowired
private UserD