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开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/e177945f0d6a6a7b9ac2a10faf9aad4e.jpeg)
最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
alt=“img” style=“zoom: 33%;” />
最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
[外链图片转存中…(img-mHgyCgQN-1713552957686)]
JVM面试专题
[外链图片转存中…(img-xZR5M2Hm-1713552957688)]
Java并发面试专题
[外链图片转存中…(img-ut2N8qV4-1713552957690)]
Kafka面试专题
[外链图片转存中…(img-Cr0Bl7L5-1713552957692)]
MongDB面试专题
[外链图片转存中…(img-SA48ibhu-1713552957693)]
MyBatis面试专题
[外链图片转存中…(img-sFEgBbMI-1713552957695)]
MySQL面试专题
[外链图片转存中…(img-BGlOjS55-1713552957697)]
Netty面试专题
[外链图片转存中…(img-sEPytoIY-1713552957698)]
RabbitMQ面试专题
[外链图片转存中…(img-7QCttXFm-1713552957700)]
Redis面试专题
[外链图片转存中…(img-RXQuTZFP-1713552957701)]
Spring Cloud面试专题
[外链图片转存中…(img-yJWXyBJt-1713552957703)]
SpringBoot面试专题
[外链图片转存中…(img-RE9ycPm3-1713552957705)]
zookeeper面试专题
[外链图片转存中…(img-PDMOiHG5-1713552957707)]
常见面试算法题汇总专题
[外链图片转存中…(img-kZZ7uM1H-1713552957708)]
计算机网络基础专题
[外链图片转存中…(img-CSmm7d4G-1713552957710)]
设计模式专题
[外链图片转存中…(img-esV5xSU3-1713552957711)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!