【SpringBoot+MySQL】后台管理系统——基础工具:mapstruct

一、 简介

mapstruct 是一个对象之间 属性值映射的工具,功能很丰富,能够满足大部分的数据赋值需求。

二、 使用

1. 先准备一个类
package com.management.dto.organization;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
@ApiModel("机构树")
public class OrgTreeDto {

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    private String id;
    /**
     * 上级部门Id
     */
    @ApiModelProperty("上级部门Id")
    private String parentId;
    /**
     * 部门编号
     */
    @ApiModelProperty("部门编号")
    private String code;
    /**
     * 部门名称
     */
    @ApiModelProperty("部门名称")

    private String title;
    /**
     * 部门等级
     */
    @ApiModelProperty("部门等级")
    private int levelCode;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")

    private Date createdAt;
    /**
     * 创建操作人
     */
    @ApiModelProperty("创建操作人")
    private String createdById;
    /**
     * 是否删除
     */
    @ApiModelProperty("是否删除")
    private boolean deleted;
    /**
     * 子级机构
     */
    @ApiModelProperty("子级机构")

    private List<OrgTreeDto> children;
    /**
     * 前端要加的
     */
    private boolean contextmenu ;
}

2. 新建一个接口
package com.management.common.mapstruct;

import com.management.dto.organization.OrgTreeDto;
import com.management.entity.Organization;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.util.List;

@Mapper(componentModel = "spring")
public interface OrgCovert {

    @Mapping(source = "name" , target = "title")
    OrgTreeDto daoTodto(Organization organization);

    List<OrgTreeDto> daoTodto(List<Organization> organizationList);
}

三、 测试

1. 在controller 新建一个web接口
    @Autowired
    private OrgCovert orgCovert;

    @ApiOperation(value = "测试数据映射")
    @GetMapping("/generateData")
    @ResponseBody
    public ServiceApiResult<String> generateData() {
        try {

            Organization organization1 = new Organization();
            organization1.setName("1");
            Organization organization2 = new Organization();
            organization1.setName("2");
            Organization organization3 = new Organization();
            organization1.setName("3");
            Organization organization4 = new Organization();
            organization1.setName("4");

            List<Organization> organizationList = new ArrayList<>();
            organizationList.add(organization1);
            organizationList.add(organization2);
            organizationList.add(organization3);
            organizationList.add(organization4);


            OrgTreeDto dto = orgCovert.daoTodto(organization1);
            log.info("[测试数据映射]-dto:{}", JSONUtil.toJsonStr(dto));

            List<OrgTreeDto> dtoList = orgCovert.daoTodto(organizationList);
            log.info("[测试数据映射]-dtoList:{}", JSONUtil.toJsonStr(dtoList));

            return ServiceApiResult.success("true");
        } catch (Exception e) {
            e.printStackTrace();
            return ServiceApiResult.error(e.getMessage());
        }
    }
2. 运行结果如下

在这里插入图片描述

2021-10-13 11:37:21.241  INFO 114568 --- [nio-8327-exec-8] c.m.controller.OrganizationController    : [测试数据映射]-dto:{"levelCode":0,"deleted":false,"contextmenu":false,"title":"4"}
2021-10-13 11:37:21.243  INFO 114568 --- [nio-8327-exec-8] c.m.controller.OrganizationController    : [测试数据映射]-dtoList:[{"levelCode":0,"deleted":false,"contextmenu":false,"title":"4"},{"levelCode":0,"deleted":false,"contextmenu":false},{"levelCode":0,"deleted":false,"contextmenu":false},{"levelCode":0,"deleted":false,"contextmenu":false}]

3 . 自带构建的实现类
package com.managementcommon.mapstruct;

import com.base.infrastructure.dto.organization.OrgTreeDto;
import com.base.infrastructure.entity.Organization;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2021-10-13T09:35:10+0800",
    comments = "version: 1.2.0.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)"
)
@Component
public class OrgCovertImpl implements OrgCovert {

    @Override
    public OrgTreeDto daoTodto(Organization organization) {
        if ( organization == null ) {
            return null;
        }

        OrgTreeDto orgTreeDto = new OrgTreeDto();

        orgTreeDto.setTitle( organization.getName() );
        orgTreeDto.setId( organization.getId() );
        orgTreeDto.setParentId( organization.getParentId() );
        orgTreeDto.setCode( organization.getCode() );
        orgTreeDto.setLevelCode( organization.getLevelCode() );
        orgTreeDto.setCreatedAt( organization.getCreatedAt() );
        orgTreeDto.setCreatedById( organization.getCreatedById() );
        orgTreeDto.setDeleted( organization.getDeleted() );

        return orgTreeDto;
    }

    @Override
    public List<OrgTreeDto> daoTodto(List<Organization> organizationList) {
        if ( organizationList == null ) {
            return null;
        }

        List<OrgTreeDto> list = new ArrayList<OrgTreeDto>( organizationList.size() );
        for ( Organization organization : organizationList ) {
            list.add( daoTodto( organization ) );
        }

        return list;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值