真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JAVABean對(duì)象轉(zhuǎn)換工具-創(chuàng)新互聯(lián)

在開發(fā)中有些規(guī)范,比如DTO、DO、VO等等,之間,如果我們需要轉(zhuǎn)換,單純的我們要一個(gè)一個(gè)的 set 值,真是一項(xiàng)苦B的活,在我以前接觸的項(xiàng)目中發(fā)現(xiàn)很多代碼是使用get/set來進(jìn)行轉(zhuǎn)換的,大量的這種冗余代碼,看著頭都大!!

專注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)涇源免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

BeanUtils

java bean對(duì)象的相關(guān)轉(zhuǎn)化,這里介紹兩個(gè) ,一個(gè)是大家都非常熟悉的 BeanUtils,還有一個(gè)就是平常在開發(fā)中經(jīng)常使用的 MapStruct。

MapStruct 和 BeanUtils 最常用的莫過于對(duì)象的的拷貝了 。 不過面對(duì)需要深拷貝的對(duì)象大家要注意了,這里并不推薦大家使用BeanUtils工具去實(shí)現(xiàn)

@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

下面重點(diǎn)說一下 MapStruct 這個(gè)轉(zhuǎn)化,相對(duì)比的話BeanUtils 就是一個(gè)大老粗,只能同屬性映射,或者在屬性相同的情況下,允許被映射的對(duì)象屬性少。

但當(dāng)遇到被映射的屬性數(shù)據(jù)類型被修改或者被映射的字段名被修改,則會(huì)導(dǎo)致映射失敗。而 mapstruct 就是一個(gè)巧媳婦兒了。

她心思細(xì)膩,把我們可能會(huì)遇到的情況都給考慮到了(要是我也能找一個(gè)這樣的媳婦兒該多好,內(nèi)心笑出了豬聲)

首先啥都不想果斷導(dǎo)入Jar包
org.mapstructmapstruct-jdk81.2.0.Finalorg.mapstructmapstruct-processor1.2.0.Final
定義兩個(gè)相同字段的對(duì)象
public class SysUser {

    private Long userId;

    private String account;

    忽略get、set....
}


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

    忽略get、set....
}

接下來定義一個(gè)接口,但是注意不需要實(shí)現(xiàn),他就呢能夠幫我們轉(zhuǎn)化很神奇的

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

@Mapper
public interface BeanConvert {

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

}
最后一步:在代碼中調(diào)用,聰明的小伙伴看下面代碼,一下就明白了,就是這么簡(jiǎn)單,搜易賊
@Test
	public void test01() {

		SysUser sysUser = new SysUser();
		sysUser.setUserId(1L);
		sysUser.setAccount("一個(gè)肥鲇魚");

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

		System.out.println(user); // User{userId=1, account='一個(gè)肥鲇魚'}
	}
兩個(gè)對(duì)象字段不相同的情況

完全兩個(gè)類字段相同的情況是很容易的,那么,更加令我們頭疼的?有多個(gè)字段名字不同但是有對(duì)應(yīng)關(guān)系應(yīng)該怎么搞呢?

小栗子
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("一個(gè)肥鲇魚");

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

		System.out.println(user);// User{userId=1, userName='一個(gè)肥鲇魚'}
	}

搞定,是不是很絲滑~

但是這么簡(jiǎn)單的兩個(gè)小例子可包含不了?MapStruct這么強(qiáng)大的功能,不管是日期格式化、還是表達(dá)式解析、還是深拷貝,都能一一搞定。
拋磚引玉!
剩下的就交給聰明的小伙伴了!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁題目:JAVABean對(duì)象轉(zhuǎn)換工具-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/dijghp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部