asp net做網(wǎng)站視頻購(gòu)物網(wǎng)站哪個(gè)最好
一.為什么要轉(zhuǎn)換實(shí)體類
通常在后端開發(fā)中經(jīng)常不直接返回實(shí)體Entity類,經(jīng)過(guò)處理轉(zhuǎn)換返回前端,前端提交過(guò)來(lái)的對(duì)象也需要經(jīng)過(guò)轉(zhuǎn)換Entity實(shí)體才做存儲(chǔ)。
二.怎么轉(zhuǎn)換
使用的BeanUtils.copyProperties方法雖然可以實(shí)現(xiàn)轉(zhuǎn)換,但是比較粗暴,不僅效率低下(使用反射)而且僅映射相同名的屬性,多數(shù)情況下還需要手動(dòng)編寫對(duì)應(yīng)的轉(zhuǎn)換方法實(shí)現(xiàn)。插件MapStruct以接口方法結(jié)合注解優(yōu)雅實(shí)現(xiàn)對(duì)象轉(zhuǎn)換,MapStruct生成器生成代碼以更貼近原生的Setter、Getter方法處理屬性映射更為高效。
三.MapStruct的使用
如下示例:
實(shí)體類User:
@Data
@AllArgsConstructor
public class User {private int id;private String name;private int age;private String address;
}
轉(zhuǎn)換后的類UserVO:
@Data
public class UserVO {private String userName;private int age;
}
轉(zhuǎn)換接口:
@Mapper
public interface UserConvert {UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);@Mapping(source = "name", target = "userName")UserVO toVO(User entity);
}
使用方法:
@Test
public void contextLoads() {User user = new User(0, "Test", 1, "成都高新區(qū)");UserVO userVO = UserConvert.INSTANCE.toVO(user);
}
如果有多個(gè)字段需要轉(zhuǎn)換的話,使用@mappings注解,如下:
@Mapper
public interface UserConvert {UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);@Mappings({@Mapping(source = "name", target = "userName"),@Mapping(target = "age", target = "age")")})UserVO toVO(User entity);
}