原文连接:细思极恐,你真的会写java吗
1.DTO与VO转换请使用工具
BeanUtils.copyProperties(userInputDTO,user);
2.转化需要抽象成一个接口
public interface DTOConvert<S,T> {
T convert(S s);
}
3.将转化类和VO类进行聚合,
public class UserVO {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public UserDTO convertToUser(){
UserInputDTOConvert userInputDTOConvert = new UserInputDTOConvert();
UserDTO convert = userInputDTOConvert.convert(this);
return convert;
}
private static class UserInputDTOConvert implements DTOConvert<UserVO,UserDTO> {
@Override
public UserDTO convert(UserVO userVO) {
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties(userVO,userDTO);
return userDTO;
}
}
}
或者使用ModelMap
private ModelMapper modelMapper = new ModelMapper();
@PostConstruct
public void init() {
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
}
4.得来回转换才行
private static class UserInputDTOConvert implements DTOConvert<UserVO,UserDTO> {
@Override
public UserDTO convert(UserVO userVO) {
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties(userVO,userDTO);
return userDTO;
}
@Override
public UserVO doBackward(UserDTO userDTO) {
UserVO userVO = new UserVO();
BeanUtils.copyProperties(userDTO,userVO);
return userVO;
}
}
5.使用lombok去掉Setter和Getter
@Setter
@Getter
public class UserVO {
private Long id;
private String name;
public UserDTO convertToUser(){
UserInputDTOConvert userInputDTOConvert = new UserInputDTOConvert();
UserDTO convert = userInputDTOConvert.convert(this);
return convert;
}
private static class UserInputDTOConvert implements DTOConvert<UserVO,UserDTO> {
@Override
public UserDTO convert(UserVO userVO) {
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties(userVO,userDTO);
return userDTO;
}
@Override
public UserVO doBackward(UserDTO userDTO) {
UserVO userVO = new UserVO();
BeanUtils.copyProperties(userDTO,userVO);
return userVO;
}
}
}
是上边的例子根本不足以体现lombok的强大。我希望写一些网上很难查到,或者很少人进行说明的lombok的使用以及在使用时程序语义上的说明。比如:@Data
,@AllArgsConstructor
,@NoArgsConstructor
..这些我就不进行一一说明了,请大家自行查询资料.
6.bean中的链式风格
7.创建容器使用guava
8.用注解实现有参无参的构造
使用:
9.使用builder
10.代理模式