mapstruct 映射列表——迹忆客-ag捕鱼王app官网
使用 mapstruct,我们可以以与映射 primitives 类似的方式映射列表。 要获取对象列表,我们应该提供一个可以映射对象的映射器方法。
语法
@mapper
public interface carmapper {
list getlistofstrings(list listofintegers);
list getcars(list carentities);
car getmodelfromentity(carentity carentity);
}
示例
打开使用 defaultexpression 映射章节中更新的项目映射。
使用以下代码更新 carentity.java
carentity.java
``java ackage com.jiyik.entity;mport java.util.gregoriancalendar;
ublic 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; import java.util.list; import java.util.uuid; @mapper( imports = uuid.class ) public interface carmapper { @mapping(source = "name", target = "name", defaultexpression = "java(uuid.randomuuid().tostring())") @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); list
getlistofstrings(list listofintegers); list getcars(list carentities); }
使用以下代码更新 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.arrays; import java.util.gregoriancalendar; import java.util.list; import static org.junit.assert.assertequals; import static org.junit.assert.assertnotnull; 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)); carentity entity1 = new carentity(); entity1.setprice(445000); entity1.setid(2); entity1.setmanufacturingdate(new gregoriancalendar(2015, 3, 5)); list
carentities = arrays.aslist(entity, entity1); car model = carmapper.getmodelfromentity(entity); assertequals("$345000.00",model.getprice()); assertequals(entity.getid(), model.getid()); assertequals("bmw", model.getbrand()); assertequals("05.04.2015", model.getmanufacturingdate()); list list = arrays.aslist(1,2,3); list listofstrings = carmapper.getlistofstrings(list); list listofcars = carmapper.getcars(carentities); assertequals(3, listofstrings.size()); assertequals(2, listofcars.size()); } }
运行以下命令来测试映射。
$ mvn clean test
执行结果如下