扫码一下
查看教程更方便
使用 mapstruct 我们可以使用 @mapping 注解的 defaultvalue 属性在源属性为空的情况下传递默认值。
@mapping(target = "target-property", source="source-property"
defaultvalue = "default-value")
打开 使用 constant 映射 章节中更新的项目映射。
carentity.java
package com.jiyik.entity; import java.util.gregoriancalendar; public class carentity { private int id; private double price; private gregoriancalendar manufacturingdate; private string name; public int getid() { return id; } public void setid(int id) { this.id = id; } public double getprice() { return price; } public void setprice(double price) { this.price = price; } public gregoriancalendar getmanufacturingdate() { return manufacturingdate; } public void setmanufacturingdate(gregoriancalendar manufacturingdate) { this.manufacturingdate = manufacturingdate; } public string getname() { return name; } public void setname(string name) { this.name = name; } }
使用以下代码更新 car.java
car.java
package com.jiyik.model; public class car { private int id; private string price; private string manufacturingdate; private string brand; private string name; public int getid() { return id; } public void setid(int id) { this.id = id; } public string getprice() { return price; } public void setprice(string price) { this.price = price; } public string getmanufacturingdate() { return manufacturingdate; } public void setmanufacturingdate(string manufacturingdate) { this.manufacturingdate = manufacturingdate; } public string getbrand() { return brand; } public void setbrand(string brand) { this.brand = brand; } public string getname() { return name; } public void setname(string name) { this.name = name; } }
使用以下代码更新 carmapper.java
carmapper.java
package com.jiyik.mapper; import com.jiyik.entity.carentity; import com.jiyik.model.car; import org.mapstruct.mapper; import org.mapstruct.mapping; @mapper public interface carmapper { @mapping(source = "name", target = "name", defaultvalue = "sample") @mapping(target = "brand", constant = "bmw") @mapping(source = "price", target = "price", numberformat = "$#.00") @mapping(source = "manufacturingdate", target = "manufacturingdate", dateformat = "dd.mm.yyyy") car getmodelfromentity(carentity carentity); }
使用以下代码更新 carmappertest.java
carmappertest.java
import com.jiyik.entity.carentity; import com.jiyik.mapper.carmapper; import com.jiyik.model.car; import org.junit.test; import org.mapstruct.factory.mappers; import java.util.gregoriancalendar; import static org.junit.assert.assertequals; public class carmappertest { private carmapper carmapper = mappers.getmapper(carmapper.class); @test public void testentitytomodel() { carentity entity = new carentity(); entity.setprice(345000); entity.setid(1); entity.setmanufacturingdate(new gregoriancalendar(2015, 3, 5)); car model = carmapper.getmodelfromentity(entity); assertequals(model.getprice(), "$345000.00"); assertequals(entity.getid(), model.getid()); assertequals("05.04.2015", model.getmanufacturingdate()); assertequals("sample", model.getname()); assertequals("bmw", model.getbrand()); } }
运行以下命令来测试映射。
$ mvn clean test
执行结果如下