扫码一下
查看教程更方便
mapstruct 在大多数情况下会自动处理类型转换。 例如,int 到 long 或 string 的转换。 转换也处理空值。 以下是一些重要的自动转换。
打开使用 builder 映射章节中更新的项目映射。
使用以下代码更新 studententity.java
studententity.java
package com.jiyik.entity; public class studententity { private string id; private string name; private string classval; private subjectentity subject; public string section; public string getid() { return id; } public void setid(string id) { this.id = id; } public string getname() { return name; } public void setname(string name) { this.name = name; } public string getclassval() { return classval; } public void setclassval(string classval) { this.classval = classval; } public subjectentity getsubject() { return subject; } public void setsubject(subjectentity subject) { this.subject = subject; } }
student.java 不变,代码如下
student.java
package com.jiyik.model; public class student { private final string name; private final int id; protected student(student.builder builder) { this.name = builder.name; this.id = builder.id; } public static student.builder builder() { return new student.builder(); } public static class builder { private string name; private int id; public builder name(string name) { this.name = name; return this; } public builder id(int id) { this.id = id; return this; } public student create() { return new student( this ); } } public string getname() { return name; } public int getid() { return id; } }
使用以下代码更新 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.test; import org.mapstruct.factory.mappers; import static org.junit.assert.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()); } }
使用以下代码更新 studentmappertest.java
studentmappertest.java
import com.jiyik.entity.studententity; import com.jiyik.mapper.studentmapper; import com.jiyik.model.student; import org.junit.test; import org.mapstruct.factory.mappers; import static org.junit.assert.assertequals; public class studentmappertest { private studentmapper studentmapper = mappers.getmapper(studentmapper.class); @test public void testentitytomodel() { studententity entity = new studententity(); entity.setname("john"); entity.setid("1"); student model = studentmapper.getmodelfromentity(entity); assertequals(entity.getname(), model.getname()); assertequals(integer.parseint(entity.getid()), model.getid()); } @test public void testmodeltoentity() { student.builder builder = student.builder().id(1).name("john"); student model = builder.create(); studententity entity = studentmapper.getentityfrommodel(model); assertequals(entity.getname(), model.getname()); assertequals(integer.parseint(entity.getid()), model.getid()); } }
运行以下命令来测试映射。
$ mvn clean test
执行结果如下