作者:小傅哥

博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!

哈喽,大家好我是技术UP主小傅哥。

如果你担心维护成本和性能考量,不想使用 BeanUtils.copyProperties 复制对象,也不想大面积的增加配置文件使用 MapStruct。而是只想要要手写效果的 x.set(y.get) 模型。那么请立刻在 IDEA 中安装插件 vo2dto v2.5.1 最新版本。截止到目前小傅哥开发的这款插件已经有 8.1k 安装量

IDEA Plugin vo2dto 是一款用于帮助使用 IntelliJ IDEA 编写代码的研发人员,快速生成两个对象转换过程中所需要大量的 x.set(y.get) 代码块的插件工具。在最新 v2.5.1 版本中已支持 Lombok.Builder 模式,让使用可丝滑得嘞!

文末提供了此插件的源码地址,你可以针对使用优化提交PR,以后那么多人的使用,都会看见你的贡献。

特性

  1. 2个对象的转换操作,通过复制 X x 对象,转换给 Y y 对象
  2. 允许使用 lombok 对象转换、lombok 和普通对象转换,对于 serialVersionUID 属性过滤
  3. 支持类继承类,全量的对象转换操作
  4. 含记忆功能的弹窗选择映射关系,支持全量对象、支持匹配对象、也支持空转换,生成一组set但无get的对象
  5. 支持对于引入不同包下的同名类处理
  6. 支持 Lombok.Builder 模式创建转换对象

️ 安装

1. 在线安装

IDEA Plugin 搜索vo2dto直接在线安装即可

2. 手动安装

IDEA Plugin 手动安装,导入下载包

使用

  • 视频:https://www.bilibili.com/video/BV13Y411h7fv - 视频内有完整的使用介绍和插件设计
  • 描述:你需要复制被转换 X x = new X() 中的 X x 部分,无论它是方法入参还是实例化或者是接口回值,接下来鼠标定位到转换对象 Y y 上,可以定位到类 大Y、或者属性 小y,这样我就可以知道你要做到是X的对象的属性值,转换到Y对象的属性值上。接下来帮你快速生成全部的 y.set(x.get) 代码片段。
IDEA Plugin vo2dto 使用演示图
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor; import java.util.Date; public class ApiTest { /**
* 普通模式
*/
public void test_vo2dto01(UserVO user) {
UserDTO userDTO = new UserDTO();
userDTO.setUserId(user.getUserId());
userDTO.setUserNickName(user.getUserNickName());
userDTO.setUserHead(user.getUserHead());
}
/**
* lombok Builder 模式
*/
public void test_vo2dto02(UserVO user) {
UserDTO userDTO = UserDTO.builder()
.userId(user.getUserId())
.userNickName(user.getUserNickName())
.userHead(user.getUserHead())
.build();
} @Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
static class UserDTO { private String userId;
private String userIdx;
private String userNickName;
private String userHead;
private int page;
private int rows; } @Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
static class UserVO { private Long id;
private String userId;
private String userNickName;
private String userHead;
private String userPassword;
private Date createTime;
private Date updateTime; } }
  • 注意;v2.5.1 版本已支持了 Lombok Builder 模式,方便使用 Lombok 的伙伴创建对象。如图使用方式即可完成创建过程。

共建

源码https://github.com/fuzhengwei/vo2dto - 你可以Fork工程,了解这套组件源码,对使用过程中所需的优化和扩展,提交你的代码。那么下次发版就会带上你的贡献了

小傅哥自研插件,为开发提效80%,已经有8.1k安装量!的更多相关文章

  1. 牛掰,在IDEA中,你可以安装小傅哥写的插件了!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...

  2. 《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! @ 目录 一.前言 二.简介 1. 谁发明了设计模式? 2. 我怎么学不会设计模式? 3. 适 ...

  3. 技术调研,IDEA 插件怎么开发「脚手架、低代码可视化编排、接口生成测试」?

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 不踩些坑,根本不是成熟的码农! 你觉得肯德基全家桶是什么?一家人一起吃的桶吗,就那么 ...

  4. PIE 插件式开发小笔记__PIESDK学习体会

    基于PIE.NET-SDK插件式二次开发文档笔记:  PIE 插件式开发配置文件: 它里面一行如下:      理解上一行'Item'关系->    library:为插件类名(程序集名称+后缀 ...

  5. Android组件化和插件化开发

    http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...

  6. Android插件化开发

    客户端开发给人的印象往往是小巧,快速奔跑.但随着产品的发展,目前产生了大量的门户型客户端.功能模块持续集成,开发人员迅速增长.不同的开发小组开发不同的功能模块,甚至还有其他客户端集成进入.能做到功能模 ...

  7. .NET简谈插件系统开发模式

    摘选自[王清培]博客 http://www.cnblogs.com/wangiqngpei557/archive/2011/06/10/2077413.html 今天跟大家分享一下我们在日常开发中并不 ...

  8. NET 平台下的插件化开发内核

    .NET 平台下的插件化开发内核(Rabbit Kernel)   每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...

  9. JQuery的插件式开发

    如果你只会JQuery的插件式开发, 那么你可以进来看看? 对于JQuery的学习,已经有3年多的时间了,直到去年与我的组长一起做项目,看到他写的JS,确实特别漂亮,有时甚至还看不太懂, 我才发现其实 ...

  10. 【我的Android进阶之旅】Android插件化开发学习资料

    1.目前开源的插件开发框架大致有哪些? 1. 任玉刚 的 dynamic-load-apk Github 地址:https://github.com/singwhatiwanna/dynamic-lo ...

随机推荐

  1. 如何在Vue3中配置国际化语言i18n

    1. 安装 vue-i18n npm i vue-i18n -S 2. 创建一个i8n的配置文件 如:i18nConfig.js // 配置 vue-i18n 实现国际化语言设置 import { c ...

  2. Avalonia开发(二)项目结构解析

    一.前言 在Avalonia开发(一)环境搭建 文章中介绍了Avalonia的介绍.开发环境的搭建.项目创建,以及项目FirstAvaloniaApp项目结构的介绍.本篇文章将介绍各平台的项目介绍. ...

  3. 深入解析 C++ 中的 ostringstream、istringstream 和 stringstream 用法

    引言: 在 C++ 中,ostringstream.istringstream 和 stringstream 是三个非常有用的字符串流类,它们允许我们以流的方式处理字符串数据.本文将深入探讨这三个类的 ...

  4. 其它——CGI,FastCGI,WSGI,uWSGI,uwsgi一文搞懂

    文章目录 CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂 一 CGI 二 FastCGI 三 WSGI 四 uWSGI 五 uwsgi CGI, FastCGI, WSGI, ...

  5. .NET微服务系列之Saga分布式事务案例实践

    自从Wing正式发布以后,很多童鞋反馈对Saga分布式事务比较感兴趣,今天就跟大家分享一下"跨行转账"的分布式事务实践案例,入门使用教程请自行前往Wing官方文档. 假设自己名下有 ...

  6. 秋招过半零Offer怎么办?

    参加今年秋招的同学都知道,尤其是双非本科更是体验深刻.9 月份至今,面试寥寥无几.笔试也不是很多,大中小公司 Offer 没拿下一个.作为应届生的我们,该怎么办呢? 1.调整好心态 这个世界上有两种事 ...

  7. 探究-ping指令的使用

    简介: 背景:一直以来在项目上经常使用ping指令来测试网络通信,最近稍微研究了一下常用的指令,记录以作备忘.--MaQaQ 2023-11-1 ping (Packet Internet Grope ...

  8. influxdb报错:cache-max-memory-size exceeded

    转载请注明出处: influxdb报错日志: 该错误信息表示 InfluxDB 引擎超过了缓存最大内存大小.这意味着 InfluxDB 的缓存使用量超出了配置的限制. 要解决此问题,可以采取以下步骤来 ...

  9. NewsCenter

    打开界面有一个搜索框 抓包查看是post形式提交的数据包 这时候试试sql注入,万能密码直接全都显示,那就说明存在sql注入漏洞 这里试试用sqlmap自动注入试试(POST类型的sql注入第一次尝试 ...

  10. JavaScript高级程序设计笔记04 变量、作用域与内存

    变量.作用域与内存 变量 特定时间点一个特定值的名称. 分类 原始值:按值访问 复制:两个独立使用.互不干扰 引用值(由多个值构成的对象):按引用访问 操作对象时,实际上操作的是对该对象的引用(ref ...