扫码一下
查看教程更方便
我们也可以添加映射多个对象。 例如,我们想要使用 student 和 address 对象获取 deliveryaddress 对象。
现在创建一个映射器接口,它可以将两个对象映射为一个。
@mapper
public interface deliveryaddressmapper {
@mapping(source = "student.name", target = "name")
@mapping(source = "address.houseno", target = "housenumber")
deliveryaddress getdeliveryaddress(studententity student, addressentity address);
}
打开自定义映射章节中更新的项目映射。
使用以下代码创建 deliveryaddress.java
deliveryaddress.java
package com.jiyik.model; public class deliveryaddress { private string name; private int housenumber; private string city; private string state; public string getname() { return name; } public void setname(string name) { this.name = name; } public int gethousenumber() { return housenumber; } public void sethousenumber(int housenumber) { this.housenumber = housenumber; } public string getcity() { return city; } public void setcity(string city) { this.city = city; } public string getstate() { return state; } public void setstate(string state) { this.state = state; } }
使用以下代码创建 addressentity.java
addressentity.java
package com.jiyik.entity; public class addressentity { private int houseno; private string city; private string state; public int gethouseno() { return houseno; } public void sethouseno(int houseno) { this.houseno = houseno; } public string getcity() { return city; } public void setcity(string city) { this.city = city; } public string getstate() { return state; } public void setstate(string state) { this.state = state; } }
使用以下代码创建 deliveryaddressmapper.java
deliveryaddressmapper.java
package com.jiyik.mapper; import com.jiyik.entity.addressentity; import com.jiyik.entity.studententity; import com.jiyik.model.deliveryaddress; import org.mapstruct.mapper; import org.mapstruct.mapping; @mapper public interface deliveryaddressmapper { @mapping(source = "student.name", target = "name") @mapping(source = "address.houseno", target = "housenumber") deliveryaddress getdeliveryaddress(studententity student, addressentity address); }
使用以下代码创建 deliveryaddressmappertest.java
deliveryaddressmappertest.java
import com.jiyik.entity.addressentity; import com.jiyik.entity.studententity; import com.jiyik.mapper.deliveryaddressmapper; import com.jiyik.model.deliveryaddress; import org.junit.jupiter.api.test; import org.mapstruct.factory.mappers; import static org.junit.jupiter.api.assertions.assertequals; public class deliveryaddressmappertest { private deliveryaddressmapper deliveryaddressmapper = mappers.getmapper(deliveryaddressmapper.class); @test public void testentitytomodel() { studententity student = new studententity(); student.setclassval("x"); student.setname("john"); student.setid(1); addressentity address = new addressentity(); address.setcity("y"); address.setstate("z"); address.sethouseno(1); deliveryaddress deliveryaddress = deliveryaddressmapper.getdeliveryaddress(student, address); assertequals(deliveryaddress.getname(), student.getname()); assertequals(deliveryaddress.getcity(), address.getcity()); assertequals(deliveryaddress.getstate(), address.getstate()); assertequals(deliveryaddress.gethousenumber(), address.gethouseno()); } }
运行以下命令来测试映射。
$ mvn clean test
执行结果如下