idea groovy自定义自动生成实体 dao/mapper service等,支持表注释 字段注释

均带实体类注释和字段注释
(每个人的代码风格习惯 稍有不同,自行更改即可)
dao/mapper service controller基本上一样 些许改动

entity生成代码脚本如下:

import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil


import java.io.*
import java.text.SimpleDateFormat

/*
 * Available context bindings:
 *   SELECTION   Iterable<DasObject>
 *   PROJECT     project
 *   FILES       files helper
 */
packageName = ""
comment = ""
typeMapping = [
        (~/(?i)tinyint|smallint|mediumint/)      : "Integer",
        (~/(?i)int/)                             : "Long",
        (~/(?i)bool|bit/)                        : "Boolean",
        (~/(?i)float|double|decimal|real/)       : "Double",
        (~/(?i)datetime|timestamp|date|time/)    : "Date",
        (~/(?i)blob|binary|bfile|clob|raw|image/): "InputStream",
        (~/(?i)/)                                : "String"
]


FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") {
   
    dir ->
    SELECTION.filter {
   
    it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each {
   
    generate(it, dir) }
}

def generate(table, dir) {
   
   
    def className = javaName(table.getName(), true)
    def fields = calcFields(table)
    packageName = getPackageName(dir)
    comment=table.getComment();
    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, className + ".java")), "UTF-8"))
    printWriter.withPrintWriter {
   
   out -> generate(out, className, fields,table)}

//    new File(dir, className + ".java").withPrintWriter {
   
    out -> generate(out, className, fields,table) }
}

// 获取包所在文件夹路径
def getPackageName(dir) {
   
   
    return dir.toString().replaceAll("\\\\", ".").replaceAll("/", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"
}


def generate(out, className, fields,table) {
   
   
    out.println "package $packageName"
    out.println ""

//    out.println "import java.io.Serializable;"
    out.println "import com.test.mybatisplus.annotation.IdType;"
    out.println "import com.test.mybatisplus.annotation.TableId;"
    out.println "import com.fasterxml.jackson.databind.annotation.JsonSerialize;"
    out.println "import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;"
    out.println "import com.test.common.core.web.domain.BaseEntity;"
    out.println "import lombok.AllArgsConstructor;"
    out.println "import lombok.Data;"
    out.println "import lombok.NoArgsConstructor;"
    out.println "import lombok.experimental.Accessors;"


    Set types = new HashSet()
    def commonNames = ['createBy', 'createTime', 'updateBy', 'updateTime', 'delFlag','remark']
    fields.each() {
   
   
        if (it.name in commonNames) {
   
   
        } else {
   
   
            types.add(it.type)
        }
    }

    if (types.contains("Date")) {
   
   
        out.println "import java.util.Date;"
        out.println "import org.springframework.format.annotation.DateTimeFormat;"
        out.println "import com.fasterxml.jackson.annotation.JsonFormat;"
    }

    if (types.contains("InputStream")) {
   
   
        out.println "import java.io.InputStream;"
    }
    out.println ""
    out.println "/**\n" +
            " * @Description  $comment \n" +
            " * @Author lily \n" +
            " * @Date "+ new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " \n" +
            " */"
    out.println ""


    out.println "@Data"
    out.println "@NoArgsConstructor"
    out.println "@AllArgsConstructor"
    out.println "@Accessors(chain = true)"
    out.println "public cl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值