[Tools] Java library entity mapping tool MapStruct

A. What is MapStruct?

  MapStruct for conversion between JavaBean object code, for example, DO is converted to DTO, DTO converted to VO, VO or Entity converted to other scenes, and although Spring libraries

Apache libraries provided for converting BeanUtils similar objects, but poor performance (determines whether the required class is loaded, if not loaded, but also to load the class. Thus a low reflection performance),

And to the type and name as it can be mapped, it can be recommended MapStruct, not only can quickly achieve conversion between JavaBean, and can achieve conversion between List,

And the performance is good;

 

II. Use MapStruct

  1. dependence introduced:

 <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>1.2.0.Final</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.2.0.Final</version>
            <optional>true</optional>
</dependency>

  2. Write converter used here as an example Entity objects converted to VO

package com.gabriel.stage.vo.transfer;

import com.gabriel.stage.entity.Car;
import com.gabriel.stage.vo.CarVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * @author: Gabriel
 * @date: 2020/3/11 23:33
 * @description Car 实体->VO 转换器
 */
@Mapper
public interface CarVOTransfer {

    CarVOTransfer INSTANCE = Mappers.getMapper(CarVOTransfer.class);

    /**
     * 实体对象->vo对象
     * @param car
     * @return
     */
    CarVO entityToVO(Car car);


    /**
     * 实体集合->vo集合
     * @param carList
     * @return
     */
    List<CarVO> entityListToVOList(List<Car> carList);
}

    Entity Object

package com.gabriel.stage.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * @author: Gabriel
 * @date: 2020/1/28 19:21
 * @description 实体类-- Car
 */
@Data
@AllArgsConstructor 
@NoArgsConstructor 
@Builder 
public  class Car { 

    / ** specified increment the above mentioned id * / 
    Private Integer the above mentioned id; 

    / ** Name * / 
    Private String name; 

    / **   brand * / 
    Private String Brand; 

    / ** Price * / 
    Private . price the BigDecimal; 
}

    VO objects

package com.gabriel.stage.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * @author: Gabriel
 * @date: 2020/3/11 23:37
 * @description
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CarVO {

    /** 指定自增id */
    private Integer id;

    /** 名称 */
    private String name;

    /**  品牌 */
    private String brand;

}

  Test category

package com.gabriel.stage.vo;

import com.gabriel.stage.entity.Car;
import com.gabriel.stage.vo.transfer.CarVOTransfer;
import com.google.common.collect.Lists;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author: Gabriel
 * @date: 2020/3/12 0:00
 * @description 测试类
 */
public class TestTransfer {
    public static void main(String[] args) {
        //转换对象
        . Car car = Car.builder () name ( " Mercedes S600") brand ( "Benz") .id (. 1) .price (. New new the BigDecimal (9999.99 )) Build ();. 

        CarVO carVO = CarVOTransfer.INSTANCE.entityToVO (CAR); 

        System.out.println ( "Object MapStruct conversion" + carVO); 

        System.out.println ( "gorgeous ======================= =================== parting line " ); 
        
        // sets of transitions 
        List <Car> Carlist = Lists.newArrayList (CAR); 

        List <CarVO> carVOList = CarVOTransfer. INSTANCE.entityListToVOList (Carlist); 

        System.out.println ( "MapStruct sets of transitions" + carVOList); 


    } 
}

  The results are shown
  

 

Guess you like

Origin www.cnblogs.com/gabriel-y/p/12466626.html