mapstruct拷贝对象

一、依赖

         <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.3.1.Final</version>
        </dependency>
          <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

二、代码

package com.citydo.bigdata.copyutils;

import lombok.Data;

@Data
public class Employee {
    private int id;
    private String name;
    private String position;
    private boolean married;
}

package com.citydo.bigdata.copyutils;

import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
    private boolean married;
}

package com.citydo.bigdata.copyutils;

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface UserMapper {
    UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
    Employee userToEmployee(User user);
    User employeeToUser(Employee employee);
}
package com.citydo.bigdata.copyutils;

public class UserMapperImpl implements UserMapper {
    @Override
    public Employee userToEmployee(User user) {
        if (user == null) {
            return null;
        }
        Employee employee = new Employee();
        employee.setId(user.getId());
        employee.setName(user.getName());
        employee.setMarried(user.isMarried());
        return employee;
    }

    @Override
    public User employeeToUser(Employee employee) {
        if (employee == null) {
            return null;
        }
        User user = new User();
        user.setId(employee.getId());
        user.setName(employee.getName());
        user.setMarried(employee.isMarried());
        return user;
    }
}
package com.citydo.bigdata.copyutils;

/**
 * org.apache.commons.beanutils.BeanUtils.copyProperties
 * org.apache.commons.beanutils.PropertyUtils.copyProperties
 * org.springframework.beans.BeanUtils.copyProperties
 * org.springframework.cglib.beans.BeanCopier.copy
 * org.mapstruct
 */
public class Copy {


    /**
     * apache.PropertyUtils
     * value = this.getSimpleProperty(orig, name);
     * if (dest instanceof DynaBean) {
     *     ((DynaBean)dest).set(name, value);
     * } else {
     *     // 核心逻辑
     *     this.setSimpleProperty(dest, name, value);
     * }
     */

    /**
     * apache.BeanUtils
     * while(var13.hasNext()) {
     *     Entry<String, Object> entry = (Entry)var13.next();
     *     String name = (String)entry.getKey();
     *     if (this.getPropertyUtils().isWriteable(dest, name)) {
     *        // 核心逻辑
     *         this.copyProperty(dest, name, entry.getValue());
     *     }
     * }
     */

    public static void main(String[] args) {
        User user = new User();
        user.setId(125);
        user.setName("Chao");
        user.setMarried(false);
        Employee e = UserMapper.INSTANCE.userToEmployee(user);
        System.out.println(e);
    }



}

发布了226 篇原创文章 · 获赞 515 · 访问量 68万+

猜你喜欢

转载自blog.csdn.net/qq_32447301/article/details/104593857