若依升级小记03-mapstruct和lombok 引入

前言

这边用若依的前后端分离版扩展进行开发,前几天加上了参数校验,然后 vo 层 和 do 的转换这块一直用的BeanUtils,然后若依原生是不集成 lombok 和 mapstruct的,一旦涉及到添加属性啥的就会十分不方便

依赖引入

<!-- 这里是写在上面的 变量声明里的 -->
<lombok.version>1.18.20</lombok.version>
<mapstruct.version>1.4.1.Final</mapstruct.version>

<dependency>
     <groupId>org.mapstruct</groupId>
     <artifactId>mapstruct-jdk8</artifactId>
 </dependency>

 <dependency>
     <groupId>org.mapstruct</groupId>
     <artifactId>mapstruct-processor</artifactId>
 </dependency>

 <dependency>
     <groupId>org.mapstruct</groupId>
     <artifactId>mapstruct</artifactId>
 </dependency>

 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
 </dependency>

<build>
   <pluginManagement>
         <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>${maven-compiler-plugin.version}</version>
                  <configuration>
                      <source>${java.version}</source>
                <target>${java.version}</target>
                <encoding>${project.build.sourceEncoding}</encoding>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${mapstruct.version}</version>
                    </path>
                </annotationProcessorPaths>
             </configuration>
         </plugin>
      </plugins>
  </pluginManagement>
</build>

简单理解下哈,上面是版本描述

使用案例

image-20220826142621289

这是我这边的 包划分,我习惯把 vo 对象放在接口包下,然后 convert 包单独放在一个包

我这边现在主要替换的是 vo 到 do 的转换,之前用的 BeanUtils,然后也顺便替换下之前手动 getter setter,原有实现我这边就不动了,只改了我这边自己添加的模块

这是 vo

@ApiModel("管理后台 - 客户资料 Request VO")
@Data
public class CompanyAddVo {

    @ApiModelProperty(value = "公司名称", required = true, example = "我是一个公司名")
    @NotBlank(message = "公司名称不可为空")
    private String name;

    @ApiModelProperty(value = "公司地址", required = true, example = "湖北省武汉市")
    @NotBlank(message = "公司地址不可为空")
    private String address;

    @ApiModelProperty(value = "备注", example = "我是一个备注")
    private String note;

    @ApiModelProperty(value = "唯一识别码", required = true, example = "我是一个识别码")
    @NotBlank(message = "唯一识别码不可为空")
    private String uniqueNumber;

}

do

@Data
@EqualsAndHashCode(callSuper = true)
public class XlCompany extends BaseEntity {
    private static final long serialVersionUID = 1L;

    private Long id;

    private String name;

    private String code;

    private String address;

    private String email;

    private String note;

    private String uniqueNumber;
}

convert 也是我们能够实现映射的关键

@Mapper
public interface CompanyConvert {

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

    XlCompany convert(CompanyAddVo bean);
}

先看下之前的实现

/**
 * 新增公司
 */
@ApiOperation("新增公司")
@RepeatSubmit
@PreAuthorize("@ss.hasPermi('xl:company:add')")
@Log(title = "公司", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Valid @RequestBody CompanyAddVo companyAddVo)
{
    XlCompany xlCompany = new XlCompany();
    BeanUtils.copyProperties(companyAddVo, xlCompany);
    xlCompany.setCreateTime(new Date());
    return toAjax(xlCompanyService.insertXlCompany(xlCompany));
}

之前的 do 和 vo 的 setter getter toString 等的重写我这边就不列举了

改为使用 mapstruct

XlCompany xlCompany = CompanyConvert.INSTANCE.convert(companyAddVo);

展望

这次升级也是主要去掉繁杂的 getter setter 方法,然后引入 mapstruct,做的扩展不够多,等到后面体系划分的更为完善,续更后面的修改,目前主要的参考是 ruoyi-vue-pro 这个项目,会尝试把这个项目里面比较好的规范引入到原始版本的若依里面,其实也是因为现在比较菜,直接替换成这个会有点压力,但是初始版本的若依很多地方用的不太方便,就出了这样一个方案,逐步引入一些能解决痛点问题的东西进来

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值