一款 IDEA 插件幫你優(yōu)雅轉(zhuǎn)化 DTO、VO、BO、PO、DO
點(diǎn)擊關(guān)注上方“Stephen”,
設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
https://juejin.cn/post/6952848675924082718
https://juejin.cn/post/6844904046097072141
https://zhuanlan.zhihu.com/p/2646753951. 定義方法出入?yún)?/span>
2. 光標(biāo)定位方法內(nèi),使用快捷鍵ALT+INSERT(WIN) 、 command + N(mac) ,或者右鍵鼠標(biāo)選擇Generate,彈出生成選項(xiàng)框后,選擇genCopyMethod,代碼就生成好了



@Data
public?class?UserVO {
????private?String?name;
????private?Date?entryDate;
????private?String?userId;
????private?List roleList;
????private?RoomVO room;
????public?static?UserVO convertToUserVO(UserDTO item) {
????????if?(item ==?null) {
????????????return?null;
????????}
????????UserVO result =?new?UserVO();
????????result.setName(item.getName());
????????result.setEntryDate(item.getEntryDate());
????????result.setUserId(item.getUserId());
????????List roleList = item.getRoleList();
????????if?(roleList ==?null) {
????????????result.setRoleList(null);
????????}?else?{
?????result.setRoleList(roleList.stream().map(UserVO::convertToRoleVO).collect(Collectors.toList());
????????}
????????result.setRoom(convertToRoomVO(item.getRoom()));
????????return?result;
????}
????public?static?RoomVO convertToRoomVO(RoomDTO item) {
????????if?(item ==?null) {
????????????return?null;
????????}
????????RoomVO result =?new?RoomVO();
????????result.setRoomId(item.getRoomId());
????????result.setBuildingId(item.getBuildingId());
????????result.setRoomName();
????????result.setBuildingName();
????????return?result;
????}
????public?static?RoleVO convertToRoleVO(RoleDTO item) {
????????if?(item ==?null) {
????????????return?null;
????????}
????????RoleVO result =?new?RoleVO();
????????result.setRoleId(item.getRoleId());
????????result.setRoleName(item.getRoleName());
????????result.setCreateTime(item.getCreateTime());
????????return?result;
????}
}
@Data
public?class?UserDTO {
????private?String?name;
????private?Date?entryDate;
????private?String?userId;
????private?List roleList;
????private?RoomDTO room;
}
@Data
public?class?RoleVO {
????private?String?roleId;
????private?String?roleName;
????private?LocalDateTime createTime;
}
@Data
public?class?RoleDTO {
????private?String?roleId;
????private?String?roleName;
????private?LocalDateTime createTime;
}
@Data
public?class?RoomVO {
????private?String?roomId;
????private?String?buildingId;
????private?String?roomName;
????private?String?buildingName;
}
@Data
public?class?RoomDTO {
????private?String?roomId;
????private?String?buildingId;
} 1、Spring BeanUtils?(copyProperties)
2、Cglib ?BeanCopier (copyProperties)
3、Apache BeanUtils (copyProperties)
4、Apache PropertyUtils?(copyProperties)
5、Dozer
6、mapstruct
7、JSON 序列化 再反序列化
1. mapstruct
@Mapper(componentModel =?"spring",uses = {RoleVOMapper.class,RoomVOMapper.class})
public?interface?UserMapper?{
????UserConverter INSTANCE = Mappers.getMapper(UserConverter.class);
????
????UserVO?toUserVO(UserDTO userDTO);
}
@Mapper(componentModel =?"spring")
public?interface?RoleMapper?{
????RoleVO?toRoleVO(RoleDTO roleDTO);
}
@Mapper(componentModel =?"spring")
public?interface?RoomMapper?{
????RoomVO?toRoomVO(RoomDTO roomDTO);
}
public?class?Main?{
????public?static?void?main(String[] args)?{
????????UserDTO user = ;
????????UserVO userVO = UserMapper.INSTANCE.toUserVO(user);
????????userVO.getRoomVO().setRoomName("大廳1");
????????userVO.getRoomVO().setBuildingName("尚德樓");
????}
}@Data
public?class?UserVO?{
????private?String name;
????private?Date entryDate;
????private?String userId;
????private?List roleList;
????private?RoomVO room;
????public?static?UserVO?convertToUserVO(UserDTO item)?{
????????if?(item ==?null) {
????????????return?null;
????????}
????????UserVO result =?new?UserVO();
????????BeanUtils.copyProperties(item,result);
????????List roleList = item.getRoleList();
????????if?(roleList ==?null) {
????????????result.setRoleList(null);
????????}?else?{
?????result.setRoleList(roleList.stream().map(UserVO::convertToRoleVO).collect(Collectors.toList());
????????}
????????result.setRoom(convertToRoomVO(item.getRoom()));
????????return?result;
????}
????public?static?RoomVO?convertToRoomVO(RoomDTO item)?{
????????if?(item ==?null) {
????????????return?null;
????????}
????????RoomVO result =?new?RoomVO();
????????BeanUtils.copyProperties(item,result);
????????
????????result.setRoomName();
????????result.setBuildingName();
????????return?result;
????}
????public?static?RoleVO?convertToRoleVO(RoleDTO item)?{
????????if?(item ==?null) {
????????????return?null;
????????}
????????RoleVO result =?new?RoleVO();
????????BeanUtils.copyProperties(item,result);
????????return?result;
????}
} 

來源:juejin.cn/post/7053264631262871583
評(píng)論
圖片
表情
