教程 > mapstruct 教程 > 阅读:769

mapstruct 使用 defaultexpression——迹忆客-ag捕鱼王app官网

使用 mapstruct 我们可以使用 defaultexpression 传递一个计算值,以防源属性为空,使用 @mapping 注解的 defaultexpression 属性。

语法

@mapping(target = "target-property", source="source-property" defaultexpression = "default-value-method")
  • default-value-method 如果 source-property 为 null,则 target-property 将设置为 default-value-method 的结果。

示例

打开 使用 defaultvalue 进行映射 一章中更新的项目映射。

使用以下代码更新 carentity.java

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", 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);
}

使用以下代码更新 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;
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));
        car model = carmapper.getmodelfromentity(entity);
        assertequals(model.getprice(), "$345000.00");
        assertequals(entity.getid(), model.getid());
        assertequals("05.04.2015", model.getmanufacturingdate());
        assertnotnull(model.getname());
        assertequals("bmw", model.getbrand());
    }
}

运行以下命令来测试映射。

$ mvn clean test

执行结果如下

mapstruct 使用 default-expression

查看笔记

扫码一下
查看教程更方便
网站地图