IDEA 代码生成插件 CodeMaker

    Java 开发过程中经常会遇到编写重复代码的事情,例如说:编写领域类和持久类的时候,大部分时候它们的变量名称,类型是一样的,在编写领域类的时候常常要重复写类似的代码。类似的问题太多……这里介绍一个 IDEA 的代码生成插件,通过Velocity支持自定义代码模板来生成代码。

项目地址:CodeMaker
下载地址:CodeMaker V1.2

主要功能
支持增加自定义代码模板(Velocity)
支持选择多个类作为代码模板的上下文

安装
下载插件:CodeMaker V1.2
1.打开设置,选择“Plugin”
2.在右边的框中点击“Install plugin from disk”
3.选择上面下载的“CodeMaker.zip”
4.点击“Apply”,然后重启 IDEA。

使用
在 Java 类编辑界面右键“Generate”,选择对应模板即可自动生成代码到当前类的包,大部分情况下生成的代码已经解决了百分之八十的问题,只需稍作修改,移动到合适的包中,就能快速完成代码编写。
在这里插入图片描述

完整生成:

在这里插入图片描述

如果代码模板需要除了当前类之外的类作为上下文,可以通过类选择框进行选择。

目前自带的两个模板:
1.Model:根据当前类生成一个与其拥有类似属性的类,用于自动生成持久类对应的领域类(在持久类拥有超过10个属性的情况下,能够节省大量时间)。
2.Converter:该模板需要两个类作为输入的上下文,用于自动生成领域类与持久类的转化类。

上面两个模板是我自己工作中常用的模板,仅供大家参考,自带的模板可能满足不了大家的需求,所以插件支持自定义新的代码模板。

模板配置
在这里插入图片描述

1.增加模板:点击“Add Template”后,填写相关配置(都不能为空),点击保存后即可生效,无需重启。
2.删除模板:点击“Delete Template”就能将该模板删除

在这里插入图片描述

1.Template Name:在生成菜单中显示的名称,英文命名
2.Class Number:该模板需要的输入上下文类的数量,例如:如果为 1,,将当前的类作为输入: c l a s s 0 ; 如 果 为 2 , 需 要 用 户 再 选 择 一 个 类 作 为 输 入 : class0;如果为 2,需要 用户再选择一个类作为输入: class02class0, $class1。
3.Class Name:生成的类的名称,支持通过 Velocity 进行配置,上下文为跟代码模板的相同。

模板上下文

模板上下文包含了以下变量:

########################################################################################
##
## Common variables:
##  $YEAR - yyyy
##  $TIME - yyyy-MM-dd HH:mm:ss
##  $USER - user.name
##
## Available variables:
##  $class0 - the context class
##  $class1 - the selected class, like $class2, $class2
##  $ClassName - generate by the config of "Class Name", the generated class name
##
## Class Entry Structure:
##  $class0.className - the class Name
##  $class0.packageName - the packageName
##  $class0.importList - the list of imported classes name
##  $class0.fields - the list of the class fields
##          - type: the field type
##          - name: the field name
##          - modifier: the field modifier, like "private"
##  $class0.methods - the list of class methods
##          - name: the method name
##          - modifier: the method modifier, like "private static"
##          - returnType: the method returnType
##          - params: the method params, like "(String name)"
##
########################################################################################

具体用法可参考自带的代码模板,通过模板上下文提供的定制能力,可以让每个用户都定制自己的风格的代码模板。

如下是我根据自己公司代码规范写的VM转换模版:
在这里插入图片描述

myselfConverter

########################################################################################
##
## Common variables:
##  $YEAR - yyyy
##  $TIME - yyyy-MM-dd HH:mm:ss
##  $USER - user.name
##
## Available variables:
##  $class0 - the context class, alias: $class
##  $class1 - the selected class, like $class1, $class2
##  $ClassName - generate by the config of "Class Name", the generated class name
##
## Class Entry Structure:
##  $class0.className - the class Name
##  $class0.packageName - the packageName
##  $class0.importList - the list of imported classes name
##  $class0.fields - the list of the class fields
##          - type: the field type
##          - name: the field name
##          - modifier: the field modifier, like "private",or "@Setter private" if include annotations
##  $class0.allFields - the list of the class fields include all fields of superclass
##          - type: the field type
##          - name: the field name
##          - modifier: the field modifier, like "private",or "@Setter private" if include annotations
##  $class0.methods - the list of class methods
##          - name: the method name
##          - modifier: the method modifier, like "private static"
##          - returnType: the method returnType
##          - params: the method params, like "(String name)"
##  $class0.allMethods - the list of class methods include all methods of superclass
##          - name: the method name
##          - modifier: the method modifier, like "private static"
##          - returnType: the method returnType
##          - params: the method params, like "(String name)"#
########################################################################################
#macro (cap $strIn)$strIn.valueOf($strIn.charAt(0)).toUpperCase()$strIn.substring(1)#end
#macro (low $strIn)$strIn.valueOf($strIn.charAt(0)).toLowerCase()$strIn.substring(1)#end
#set($class0Var = "#low(${class0.ClassName})")
#set($class1Var = "#low(${class1.ClassName})")
package $class0.PackageName;

#foreach($importer in $class0.ImportList)
import $importer;
#end
import $class1.packageName.$class1.className;

/**
 *
 * @author $USER
 * @version ${ClassName}.java, v 0.1 $TIME $USER
 */
@Data 
public class $ClassName {

    /**
     * Convert ${class1.ClassName} to ${class0.ClassName}
     * @param ${class1Var}
     * @return
     */
    public static $class0.ClassName convertTo${class0.ClassName}($class1.ClassName #low($class1.ClassName)) {
        if (${class1Var} == null) {
            return null;
        }
        $class0.ClassName ${class0Var} = new ${class0.ClassName}();

#foreach($field in $class0.Fields)
#if( $field.modifier.equals("private"))
        ${class0Var}.set#cap($field.Name)(${class1Var}.get#cap($field.Name)());
#end
#end

        return ${class0Var};
    }

    /**
     * Convert ${class0.ClassName} to ${class1.ClassName}
     * @param ${class0Var}
     * @return
     */
    public static $class1.ClassName convertTo${class1.ClassName}($class0.ClassName #low($class0.ClassName)) {
        if (${class0Var} == null) {
            return null;
        }
        $class1.ClassName ${class1Var} = new ${class1.ClassName}();

#foreach($field in $class1.Fields)
#if( $field.modifier.equals("private"))
        ${class1Var}.set#cap($field.Name)(${class0Var}.get#cap($field.Name)());
#end
#end

        return ${class1Var};
    }
}
idea是一款功能强大的集成开发环境,提供了丰富的代码模板设置功能。通过对代码模板进行设置,我们可以大大提高开发效率和代码质量。具体设置如下: 1. 打开idea,点击菜单栏上的“File”,然后选择“Settings”。 2. 在弹出的窗口左侧的面板中,找到“Editor”选项,展开后点击“Live Templates”。 3. 在右侧的窗口中,可以看到已经有一些默认的代码模板,我们可以根据需要进行修改和添加。 4. 若要修改某个代码模板,可以选中对应的模板,然后点击窗口下方的“Edit”按钮。在弹出的编辑窗口中,可以修改代码模板的缩写、模板内容以及变量等。 5. 若要添加新的代码模板,可以点击窗口下方的“+”按钮,然后选择对应的语言和代码模板类型,填写相应的缩写和代码内容。 6. 可以通过使用变量来增加代码模板的灵活性。在代码模板中输入$符号,然后选择对应的变量类型,如方法名、类名等。 7. 可以通过使用宏来进一步定制代码模板。宏是一种由多个变量组成的组合,可以根据需要灵活选择。在代码模板中输入#符号,然后选择对应的宏,如当前时间、用户等。 8. 设置完成后,点击窗口底部的“Apply”按钮,然后关闭窗口即可。 通过合理设置idea的代码模板,可以大大减少代码编写的重复性工作,提高开发效率。同时,良好的代码模板设置还可以促使开发人员遵循统一的编码规范,提高代码的可读性和维护性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值