mapstruct轉化成員變數,拷貝物件欄位資料,以及複製後為null問題
阿新 • • 發佈:2021-01-25
Java拷貝物件變數到新物件
BeanUtils.copyProperties(people,personVO);
這是之前一直再用,現推薦使用mapstruct包
import org.mapstruct.Mapper;
@Mapper(
componentModel = "spring"
)
public interface PersonConvert {
List<personVO> convertList(List<Person> peoples);
}
但是會有一種情況,拷貝失敗的問題,得到的物件為null,這時候需要在介面方法上添加註解,隨機寫入某個欄位的對映關係即可
@Mappings({
@Mapping(source = "rightName", target = "rightName", ignore = true),
})
List<personVO> convertList(List<Person> peoples);
所屬的是mapstruct包,沒有繼承關係,在介面上添加註釋@Mapper(componentModel = “spring”)
,在專案啟動時會生成對應的Impl檔案
這是自動生成的實現類程式碼:
@Component
public class PersonConvertImpl implements PersonConvert {
public PersonConvertImpl() {
}
public List<personVO> convertList(List<Person> peoples) {
if (peoples == null) {
return null;
} else {
List<personVO> list = new ArrayList(peoples.size());
Iterator var3 = peoples.iterator();
while(var3.hasNext()) {
Person person = (Person)var3.next();
list.add(this.personTopersonVO(person));
}
return list;
}
}
protected personVO personTopersonVO(Person person) {
if (person == null) {
return null;
} else {
personVO personVO = new personVO();
personVO.setName(person.getName());
personVO.setIdCard(person.getIdCard());
personVO.setGender(person.getGender());
personVO.setNation(person.getNation());
personVO.setMobile(person.getMobile());
personVO.setAddress(person.getAddress());
return personVO;
}
}
}