JAVABean对象转换工具-创新互联

在开发中有些规范,比如DTO、DO、VO等等,之间,如果我们需要转换,单纯的我们要一个一个的 set 值,真是一项苦B的活,在我以前接触的项目中发现很多代码是使用get/set来进行转换的,大量的这种冗余代码,看着头都大!!

专注于为中小企业提供网站制作、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业泾源免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

BeanUtils

java bean对象的相关转化,这里介绍两个 ,一个是大家都非常熟悉的 BeanUtils,还有一个就是平常在开发中经常使用的 MapStruct。

MapStruct 和 BeanUtils 最常用的莫过于对象的的拷贝了 。 不过面对需要深拷贝的对象大家要注意了,这里并不推荐大家使用BeanUtils工具去实现

@Test
	public void test01() {

		SysUser sysUser = new SysUser();
		sysUser.setUserId(1L);
		sysUser.setUserName("张三");
		sysUser.setCreateTime(new Date());

		User user = new User();

		BeanUtils.copyProperties(sysUser,user);
	}
MapStruct

下面重点说一下 MapStruct 这个转化,相对比的话BeanUtils 就是一个大老粗,只能同属性映射,或者在属性相同的情况下,允许被映射的对象属性少。

但当遇到被映射的属性数据类型被修改或者被映射的字段名被修改,则会导致映射失败。而 mapstruct 就是一个巧媳妇儿了。

她心思细腻,把我们可能会遇到的情况都给考虑到了(要是我也能找一个这样的媳妇儿该多好,内心笑出了猪声)

首先啥都不想果断导入Jar包
org.mapstructmapstruct-jdk81.2.0.Finalorg.mapstructmapstruct-processor1.2.0.Final
定义两个相同字段的对象
public class SysUser {

    private Long userId;

    private String account;

    忽略get、set....
}


public class User {
	
	private Long userId;
	
	private String account;

    忽略get、set....
}

接下来定义一个接口,但是注意不需要实现,他就呢能够帮我们转化很神奇的

//注意Mapper引入路径是:import org.mapstruct.Mapper;

@Mapper
public interface BeanConvert {

	BeanConvert COPY_PROPERTIES = Mappers.getMapper(BeanConvert.class);
	
	User sysUserDtoToUser(SysUser sysUser);

}
最后一步:在代码中调用,聪明的小伙伴看下面代码,一下就明白了,就是这么简单,搜易贼
@Test
	public void test01() {

		SysUser sysUser = new SysUser();
		sysUser.setUserId(1L);
		sysUser.setAccount("一个肥鲇鱼");

		User user = BeanConvert.COPY_PROPERTIES.sysUserDtoToUser(sysUser);

		System.out.println(user); // User{userId=1, account='一个肥鲇鱼'}
	}
两个对象字段不相同的情况

完全两个类字段相同的情况是很容易的,那么,更加令我们头疼的 有多个字段名字不同但是有对应关系应该怎么搞呢?

小栗子
public class SysUser {

    private Long userId;

    private String account;

    忽略get、set....
}


public class User {

	private Long userId;

	private String userName;

    忽略get、set....
}

将SysUser中account字段的值,赋值到User中userName

@Mapper
public interface BeanConvert {

	BeanConvert COPY_PROPERTIES = Mappers.getMapper(BeanConvert.class);

	@Mapping(source = "account", target = "userName")
	User sysUserDtoToUser(SysUser sysUser);


    // 多字段情况

    // @Mappings({
	// 		@Mapping(source = "userName", target = "account"),
	// 		@Mapping(source = "userId", target = "id"),
	// 		@Mapping(source = "createTime", target = "time")
	// })
}

@Test
	public void test01() {

		SysUser sysUser = new SysUser();
		sysUser.setUserId(1L);
		sysUser.setAccount("一个肥鲇鱼");

		User user = BeanConvert.COPY_PROPERTIES.sysUserDtoToUser(sysUser);

		System.out.println(user);// User{userId=1, userName='一个肥鲇鱼'}
	}

搞定,是不是很丝滑~

但是这么简单的两个小例子可包含不了 MapStruct这么强大的功能,不管是日期格式化、还是表达式解析、还是深拷贝,都能一一搞定。
抛砖引玉!
剩下的就交给聪明的小伙伴了!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

新闻名称:JAVABean对象转换工具-创新互联
网站地址:https://www.cdcxhl.com/article48/dijghp.html

成都网站建设公司_创新互联,为您提供自适应网站全网营销推广网站建设动态网站网站导航静态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设