Idea 根据 表 生成 实体类

本文介绍了一种使用IntelliJ IDEA自动生成Java实体类的方法,通过脚本解析数据库表结构并映射到Java类型,适用于快速开发阶段。文章详细展示了如何配置类型映射和文件生成流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源: https://blog.youkuaiyun.com/lp2388163/article/details/86480480

点击这个 

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

/*
 * Available context bindings:
 *   SELECTION   Iterable<DasObject>
 *   PROJECT     project
 *   FILES       files helper
 */

packageName = "com.sample;"
typeMapping = [
        (~/(?i)bigint/)                   : "Long",
        (~/(?i)int/)                      : "Integer",
        (~/(?i)float|double|decimal|real/): "Double",
        (~/(?i)datetime|timestamp/)       : "java.util.Date",
        (~/(?i)time/)                     : "java.util.Date",
        (~/(?i)date/)                     : "java.sql.Date",
        //(~/(?i)time/)                     : "java.sql.Time",
        (~/(?i)/)                         : "String"
]

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


def generate(table, dir) {
    def className = javaName(table.getName(), true)
    def fields = calcFields(table)
    new PrintWriter(new OutputStreamWriter(new FileOutputStream( new File(dir, className + ".java")), "utf-8")).withPrintWriter { out -> generate(out, className, fields) }
}


def generate(out, className, fields) {
    out.println "package $packageName"
    out.println ""
    out.println ""
    out.println "public class $className {"
    out.println ""
    fields.each() {

        if (isNotEmpty(it.commoent)) {
            out.println "\t/**"
            out.println "\t * ${it.commoent}"
            out.println "\t */"
        }


        if (it.annos != "") out.println "  ${it.annos}"
        out.println "  private ${it.type} ${it.name};"
    }
    out.println ""
    // 注释掉 set get 方法
    /*fields.each() {
        out.println ""
        out.println "  public ${it.type} get${it.name.capitalize()}() {"
        out.println "    return ${it.name};"
        out.println "  }"
        out.println ""
        out.println "  public void set${it.name.capitalize()}(${it.type} ${it.name}) {"
        out.println "    this.${it.name} = ${it.name};"
        out.println "  }"
        out.println ""
    }*/
    out.println "}"
}

def calcFields(table) {
    DasUtil.getColumns(table).reduce([]) { fields, col ->
        def spec = Case.LOWER.apply(col.getDataType().getSpecification())
        def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
        fields += [[
                           name    : javaName(col.getName(), false),
                           type    : typeStr,
                           commoent: col.getComment(),
                           annos   : ""]]
    }
}

def javaName(str, capitalize) {
    /*def s = com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(str)
            .collect { Case.LOWER.apply(it).capitalize() }
            .join("")
            .replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")
    capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]*/
    return str
}

def isNotEmpty(content) {
    return content != null && content.toString().trim().length() > 0
}

 

转载于:https://www.cnblogs.com/whm-blog/p/10971945.html

<think>好的,我现在需要帮用户找一个在IntelliJ IDEA根据数据库自动生成实体类的插件。首先,用户的问题是关于自动生成实体类的插件,可能他们手动创建实体类太麻烦,尤其是当有很多字段的时候。用户提到了同事推荐的EasyCode插件,所以这个插件可能是一个候选。 接下来,我需要确认用户提供的引用内容。引用[1]提到EasyCode插件可以自动生成实体类,适用于有大量字段的,这可能正是用户需要的。引用[2]和[3]也提到了IDEA连接数据库生成实体类的方法,包括使用JPA和可能的其他插件。 首先,我需要验证这些插件的可用性和安装步骤。EasyCode插件在IDEA的插件市场里应该可以直接搜索到,安装后需要配置数据库连接,然后选择生成实体类。另外,JPA的逆向工程也是一个方法,可能不需要额外插件,但需要项目使用Spring Boot和JPA,这可能对用户的技术栈有要求。 用户可能的需求是简单易用,快速生成实体类,所以插件方式可能更友好。需要检查是否有其他推荐插件,比如MyBatis Code Helper或JPA Buddy,这些也可能提供类似功能,但根据引用内容,EasyCode已经被同事推荐,可能更符合用户的情况。 然后,我需要整理步骤:安装插件、连接数据库生成实体类。同时,注意事项比如检查字段映射、注解支持(如Lombok)、生成路径等,这些对用户来说可能很重要,避免生成后需要大量调整。 可能的问题点:用户是否已经配置了数据库连接?是否需要额外的依赖,比如Lombok或JPA注解库?是否需要配置模板来自定义生成的代码?这些可能需要进一步说明,但根据引用内容,可能用户只需要基本步骤即可。 最后,生成相关问题,帮助用户深入了解其他相关插件或方法,比如性能分析、优化方法、应用场景,但需要调整到插件使用方面的问题,比如替代方案、处理复杂结构、自定义生成规则等。</think>在IntelliJ IDEA中,可以通过以下三种主要方式实现数据库自动生成实体类: ### 一、使用EasyCode插件(推荐) 1. **安装插件** 打开IDEA的插件市场(File → Settings → Plugins),搜索"EasyCode"并安装[^1] 2. **连接数据库** 通过Database工具窗口添加数据库连接(需提前配置JDBC驱动) 3. **生成实体类** 在数据库上右键选择"EasyCode → Generate Code",选择生成路径和模板类型: ```text |- src |- main |- java |- com.example.entity # 生成实体类存放路径 ``` 4. **支持特性** - 自动生成Lombok注解 - 支持Swagger文档注释 - 可自定义字段类型映射规则 ### 二、使用JPA逆向工程 1. **添加依赖** 在`pom.xml`中添加Spring Data JPA依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. **生成操作** 连接数据库后,在上右键选择"JPA → Generate Persistence Mapping",可生成带JPA注解的实体类[^3] ### 三、使用Database Tools内置功能 1. **自动生成POJO** 在数据库上右键选择"Scripted Extensions → Generate POJOs.groovy",可直接生成基本实体类结构[^2] $$ @Entity @Table(name = "user") @Data // Lombok注解 public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name") private String userName; } $$ **注意事项**: 1. 复杂字段类型需手动调整映射关系 2. 生成后需检查主键生成策略 3. 建议配合Lombok插件使用简化代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值