Skip to content

gudqs7-idea-plugins/getter-setter-postfix-idea-plugin

Repository files navigation

Contributor Covenant license GitHub release Jetbrains Plugins Version
Downloads Install Plugins


English 🇺🇸

GenerateAllSetter Postfix Completion 是做什么的?

  • 是一个 IDEA 插件,仅支持 Java 。
  • 参考了 GenerateAllSetter 插件,作为其补充,添加了几个 Postfix 语法,功能与 GenerateAllSetter 基本一致。
  • 在 pojo 变量之后通过 .allset 生成所有 setter
  • 在 pojo 变量之后通过 .allsetn 生成所有设置器(但没有默认值)
  • 在 pojo 变量之后通过 .allget 生成所有 getter
  • 在使用 @lombok.Builder 的 pojo 变量之后通过 .allbuilder 生成所有 setter 调用链

为什么这个项目有用?

  • 多一个选择,另外本人认为 Postfix 比较顺手,有助于进一步提高效率。
  • 给大家提供一个 Postfix 插件开发模板,希望大家多开发一些提高效率的插件。

我该如何开始?

1.安装插件

zip 包安装

从最新的 Release 页下载 zip 包,然后打开 IDEA,进入 Settings --> Plugins --> 小齿轮 --> Install Plugin from Disk
zip

Marketplace 安装

打开 IDEA,进入 Settings --> Plugins,选中 Marketplace,输入 GenerateAllSetter Postfix Completion 点击 Install
Marketplace

2.打开俺提供的示例项目

示例项目地址:docer-savior-plugin-usage-examples

git clone https://github.com/docer-savior/docer-savior-plugin-usage-examples

下载后,找到 cn.gudqs.example.genset.GenerateSetterAndGetterUsage 文件

3.插件使用

演示所使用的基础类

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
class Foo {

    private Integer testInt;

    private Long testLong;

    private Float testFloat;

    private Double testDouble;

    private Boolean testBoolean;

}

生成 set

public void usage01() {
    // 用法1, 生成所有 set 方法, 带默认值, 通过 postfix
    Foo foo = new Foo();
    // 取消下面的注释, 光标位于 allset 后面, 按下 Tab 键
//        foo.allset
    // 即可得到下面结果, 且 foo.allset 会自动消失
    foo.setTestInt(0);
    foo.setTestLong(0L);
    foo.setTestFloat(0f);
    foo.setTestDouble(0D);
    foo.setTestBoolean(false);
}

生成 get

public void usage03() {
    // 用法3, 生成所有 get 方法, 通过 postfix
    Foo foo = new Foo();
    // 取消下面的注释, 光标位于 allget 后面, 按下 Tab 键
//        foo.allget
    // 即可得到下面结果, 且 foo.allget 会自动消失
    Integer testInt = foo.getTestInt();
    Long testLong = foo.getTestLong();
    Float testFloat = foo.getTestFloat();
    Double testDouble = foo.getTestDouble();
    Boolean testBoolean = foo.getTestBoolean();
}

Lombok 的 @Builder 快速生成所有赋值方法的调用链

public void usage04() {
    // 用法4, 生成所有 set 方法, 通过 builder, 通过 postfix
    // 取消下面的注释, 光标位于 allbuilder 后面, 按下 Tab 键
//        Foo.builder().allbuilder
    // 即可得到下面结果
    Foo foo = Foo.builder()
            .testInt(0)
            .testLong(0L)
            .testFloat(0f)
            .testDouble(0D)
            .testBoolean(false)
            .build();
}

根据一段含有源对象(a)/目标对象(b)的 b.setXxx(a.getXxx()) 方法代码生成所有 set 方法以快速实现对象转换

public void usage05() {
    // 用法5, 将 src 的数据赋值给 dest, 常用于两个不同类直接进行 convert(需字段名称相同), 通过 postfix
    Foo src = new Foo();
    Foo dest = new Foo();
    // 取消下面的注释, 光标位于 convert 后面, 按下 Tab 键
//        dest.setTestInt(src.getTestInt());.convert
    // 即可得到下面结果
    dest.setTestInt(src.getTestInt());
    dest.setTestLong(src.getTestLong());
    dest.setTestFloat(src.getTestFloat());
    dest.setTestDouble(src.getTestDouble());
    dest.setTestBoolean(src.getTestBoolean());
}

如果需要,我可以从哪里获得更多帮助?

通过提交 Issue 来获取帮助

点击访问 Github Issue

欢迎大家提问,欢迎大家一起完善它!

另外,我接入了 IDEA 的错误处理组件,因此当发现插件报错提示时,按照 IDEA 提示,可查看错误信息,并一键上报给我(即自动生成一个 Issue)

通过查看 Wiki 来获取更多说明

贡献指南

贡献指南

致谢名单

About

类似 GenerateAllSetter, 但通过后缀(即类似 .var用法)来触发!

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors