当前位置: 首页 > news >正文

ruoyi-nbcio-plus后端里mapstruct-plus和lombok的使用

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/

更多nbcio-boot功能请看演示系统 

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://122.227.135.243:9888

     Mapstruct Plus 是 Mapstruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。

和 Mapstruct 一样,本质上都是一个基于 JSR 269 的 Java 注释处理器,因此可以由 Maven、Gradle、Ant 等来构建触发。

Mapstruct Plus 内嵌 Mapstruct,和 Mapstruct 完全兼容,如果之前已经使用 Mapstruct,可以无缝替换依赖。

1、pom.xml里依赖的引入,如下:

<mapstruct-plus.version>1.3.5</mapstruct-plus.version><mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version><mapstruct.verbose>true</mapstruct.verbose><lombok.version>1.18.30</lombok.version><dependency><groupId>io.github.linpeilie</groupId><artifactId>mapstruct-plus-spring-boot-starter</artifactId><version>${mapstruct-plus.version}</version></dependency>

2、与lombok整合

与 Mapstruct 整合 lombok 的方式一致。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.verison}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding><annotationProcessorPaths><path><groupId>com.github.therapi</groupId><artifactId>therapi-runtime-javadoc-scribe</artifactId><version>${therapi-javadoc.version}</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></path><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${spring-boot.version}</version></path><path><groupId>io.github.linpeilie</groupId><artifactId>mapstruct-plus-processor</artifactId><version>${mapstruct-plus.version}</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok-mapstruct-binding</artifactId><version>${mapstruct-plus.lombok.version}</version></path></annotationProcessorPaths><compilerArgs><arg>-parameters</arg></compilerArgs></configuration></plugin>

3、要实现两个类之间的转换,只需要在其中一个类上增加注解 @AutoMapper ,配置 target 属性,指定目标类即可,如果不想生成该转换逻辑的话,可以通过注解的 reverseConvertGenerate 属性来配置。如

import com.nbcio.common.core.validate.AddGroup;
import com.nbcio.common.core.validate.EditGroup;
import com.nbcio.common.mybatis.core.domain.BaseEntity;
import com.nbcio.demo.domain.TestDemo;import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;/*** 测试单表业务对象 test_demo** @author nbacheng* @date 2021-07-26*/@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = TestDemo.class, reverseConvertGenerate = false)
public class TestDemoBo extends BaseEntity {/*** 主键*/@NotNull(message = "主键不能为空", groups = {EditGroup.class})private Long id;/*** 部门id*/@NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class})private Long deptId;/*** 用户id*/@NotNull(message = "用户id不能为空", groups = {AddGroup.class, EditGroup.class})private Long userId;/*** 排序号*/@NotNull(message = "排序号不能为空", groups = {AddGroup.class, EditGroup.class})private Integer orderNum;/*** key键*/@NotBlank(message = "key键不能为空", groups = {AddGroup.class, EditGroup.class})private String testKey;/*** 值*/@NotBlank(message = "值不能为空", groups = {AddGroup.class, EditGroup.class})private String value;}

相关文章:

  • opencv各个模块介绍(2)
  • 好用的GPTs:指定主题搜索、爬虫、数据清洗、数据分析自动化
  • 【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)#POJ1185:炮兵阵地 #互不侵犯
  • LINQ常用扩展方法、委托、Lambda、yield
  • 汽车信息安全--密钥管理系统初探(2)
  • GraalVM详细安装及打包springboot、java、javafx使用教程(打包普通JAVA项目篇)
  • Python 指南-最短路径(Dijkstra 算法):
  • 【微服务】Spring Boot 版本升级到 2.7.18
  • Web安全基础入门+信息收集篇
  • 3.21 ARM day5
  • Java学习笔记01
  • 基于ssm的学生选课管理系统的设计与实现
  • 基于ssm的酒店民宿管理系统的设计与实现
  • JAVA面向对象编程 JAVA语言入门基础
  • 【机器学习-07】逻辑回归(Logistic Regression)的介绍和python实现
  • JavaScript 如何正确处理 Unicode 编码问题!
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Angular数据绑定机制
  • JavaScript 基本功--面试宝典
  • JavaScript创建对象的四种方式
  • leetcode讲解--894. All Possible Full Binary Trees
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 阿里云购买磁盘后挂载
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 记一次用 NodeJs 实现模拟登录的思路
  • 理清楚Vue的结构
  • 免费小说阅读小程序
  • 嵌入式文件系统
  • 全栈开发——Linux
  • 详解移动APP与web APP的区别
  • 小程序开发中的那些坑
  • 译有关态射的一切
  • 应用生命周期终极 DevOps 工具包
  • 找一份好的前端工作,起点很重要
  • 仓管云——企业云erp功能有哪些?
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​MySQL主从复制一致性检测
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 计算机视觉入门
  • (4)(4.6) Triducer
  • (三)elasticsearch 源码之启动流程分析
  • (十六)一篇文章学会Java的常用API
  • (一)Dubbo快速入门、介绍、使用
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)【Hibernate总结系列】使用举例
  • (转)关于pipe()的详细解析
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET中winform传递参数至Url并获得返回值或文件
  • ::before和::after 常见的用法