List user2UserBO(List user);
}
测试代码
public class MapStructTest {
@Test
public void fun1() {
User user = DataUtil.build(User.class);
System.out.println(user);
UserBO userBO = UserMapper.MAPPER.user2UserBO(user);
System.out.println(userBO);
}
@Test
public void fun2() {
List list = new ArrayList<>();
list.add(DataUtil.build(User.class));
list.add(DataUtil.build(User.class));
list.add(DataUtil.build(User.class));
list.forEach(System.out::println);
List res = UserMapper.MAPPER.user2UserBO(list);
res.forEach(System.out::println);
}
}
注:UserMapper只是一个接口,它只所以能够直接使用,是因为系统自动生成了UserMapper的实现类,具体代码如下所示:
public class UserMapperImpl implements UserMapper {
public UserMapperImpl() {
}
public UserBO user2UserBO(User user) {
if (user == null) {
return null;
} else {
UserBOBuilder userBO = UserBO.builder();
userBO.id(user.getId());
userBO.nickname(user.getNickname());
userBO.avatar(user.getAvatar());
userBO.email(user.getEmail());
userBO.wechat(user.getWechat());
userBO.status(user.getStatus());
return userBO.build();
}
}
public List user2UserBO(List user) {
if (user == null) {
return null;
} else {
List list = new ArrayList(user.size());
Iterator var3 = user.iterator();
while(var3.hasNext()) {
User user1 = (User)var3.next();
list.add(this.user2UserBO(user1));
}
return list;
}
}
}
待转换的类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private static final long serialVersionUID = 6357528845064191241L;
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 大头相
*/
private String img;
/**
- 邮箱
*/
private String email;
/**
- 微信
*/
private String wechat;
/**
- 更新时间
*/
private Date updateTime;
}
目标类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserBO implements Serializable {
private static final long serialVersionUID = 7257164843346458694L;
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 大头相
*/
private String img;
/**
- 邮编
*/
private String email;
/**
- 微信
*/
private String wexin;
/**
- 更新时间
*/
private Date updateTime22;
}
转换接口
@Mapper
public interface UserMapper {
UserMapper MAPPER = Mappers.getMapper(UserMapper.class);
@Mappings({
@Mapping(source = “avatar”, target = “img”),
@Mapping(source = “wechat”, target = “wexin”),
@Mapping(source = “updateTime”, target = “updateTime22”)
})
UserBO user2UserBO(User user);
}
测试类
public class MapStructTest {
@Test
public void fun() {
User user = DataUtil.build(User.class);
System.out.println(user);
UserBO userBO = UserMapper.MAPPER.user2UserBO(user);
System.out.println(userBO);
}
}
待转换的类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 创建时间
*/
private LocalDateTime createTime;
}
目标类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserBO {
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 创建时间
*/
private String createTime;
}
转换工具类
public class DateTransUtil {
public static LocalDateTime str2LocalDateTime(String str){
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);
return LocalDateTime.parse(str,dtf);
}
public static String localDateTime2Str(LocalDateTime localDateTime){
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);
return dtf.format(localDateTime);
}
}
转换接口
@Mapper
public interface UserMapper {
UserMapper MAPPER = Mappers.getMapper(UserMapper.class);
@Mapping(target = “createTime”, expression = “java(com.hc.util.DateTransUtil.localDateTime2Str(user.getCreateTime()))”)
UserBO user2UserBO(User user);
}
测试类
public class MapStructTest {
@Test
public void fun() {
User user = DataUtil.build(User.class);
System.out.println(user);
UserBO userBO = UserMapper.MAPPER.user2UserBO(user);
System.out.println(userBO);
}
}
待合并的类
- UserBO
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserBO {
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
}
- AddressBO
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AddressBO {
private String addr;
}
目标类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 地址
*/
private String addr;
}
转换接口
@Mapper
public interface UserMapper {
UserMapper MAPPER = Mappers.getMapper(UserMapper.class);
@Mappings({
@Mapping(source = “userBO.id”, target = “id”), //可以省略
@Mapping(source = “userBO.nickname”, target = “nickname”), //可以省略
@Mapping(source = “addressBO.addr”, target = “addr”), //可以省略
})
User user2UserBO(UserBO userBO, AddressBO addressBO);
}
说明:
-
当多个对象中, 有其中一个为 null, 则会直接返回 null
-
当多个原对象中,有相同名字的属性时,需要通过 @Mapping 注解来具体的指定, 以免出现歧义(不指定会报错)
测试类
public class MapStructTest {
@Test
public void fun() {
UserBO userBO = DataUtil.build(UserBO.class);
System.out.println(userBO);
AddressBO addressBO = DataUtil.build(AddressBO.class);
System.out.println(addressBO);
User user = UserMapper.MAPPER.user2UserBO(userBO,addressBO);
System.out.println(user);
}
}
待转换的类
目标类
转换接口
测试类
待转换的实体类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private static final long serialVersionUID = 6357528845064191241L;
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 大头相
*/
private String avatar;
/**
- 登录名
*/
private String account;
/**
- 密码
*/
private String password;
/**
- 性别 1男 2女 3未知
*/
private Byte gender;
/**
- 电话
*/
private String tel;
/**
- 邮编
*/
private String email;
/**
*/
private String qq;
/**
- 微信
*/
private String wechat;
/**
- 盐值
*/
private String salt;
/**
- 备注
*/
private String info;
/**
- 状态
*/
private Byte status;
/**
- 注册时间
*/
private Date createTime;
/**
- 更新时间
*/
private Date updateTime;
}
目标实体类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserBO implements Serializable {
private static final long serialVersionUID = 7257164843346458694L;
/**
- 编号
*/
private Long id;
/**
- 昵称
*/
private String nickname;
/**
- 大头相
*/
private String avatar;
/**
- 邮编
*/
private String email;
/**
- 微信
*/
private String wechat;
}
泛型类
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
/**
- 每页显示的条数
*/
private Integer pageSize = 10;
/**
- 当前的页码
*/
private Integer pageNum;
/**
- 一共有多少条记录
*/
private Long total;
/**
- 一共有多少页
*/
private Integer pages;
/**
- 每一页所显示的数据
*/
private List result;
/**
- 分页请求路径
*/
private String url;
}
转换接口
@Mapper
public interface UserMapper {
UserMapper MAPPER = Mappers.getMapper(UserMapper.class);
//方法一
PageBean user2UserBO(PageBean user);
//方法二
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
/**
- 每页显示的条数
*/
private Integer pageSize = 10;
/**
- 当前的页码
*/
private Integer pageNum;
/**
- 一共有多少条记录
*/
private Long total;
/**
- 一共有多少页
*/
private Integer pages;
/**
- 每一页所显示的数据
*/
private List result;
/**
- 分页请求路径
*/
private String url;
}
转换接口
@Mapper
public interface UserMapper {
UserMapper MAPPER = Mappers.getMapper(UserMapper.class);
//方法一
PageBean user2UserBO(PageBean user);
//方法二
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-qeGbIrJU-1715233207403)]
[外链图片转存中…(img-eXi8zDeN-1715233207404)]
[外链图片转存中…(img-DYW7OVIq-1715233207404)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
1244

被折叠的 条评论
为什么被折叠?



