84

如何使用 IntelliJ IDEA 10 从数据库模型生成实体 (POJO)。我在 IntelliJ 中创建“数据源”,但我不知道如何生成 POJO。

4

2 回答 2

141

更新:
在 IntelliJ 16 中,此功能现已实现。这样做的步骤是:

  1. 数据库视图上下文菜单
  2. 脚本扩展
  3. 生成 POJO

您可以在此处阅读更多内容:
功能请求:允许纯 JDBC 开发人员“从数据库模式生成类”


注意: 以下信息与版本 15 及更早版本有关:

首先,您需要告诉 IntelliJ 您正在使用 Hibernate(如果您需要表的 orm POJO,我猜您是)

  1. 转到“项目结构”(alt+ ctrl+ shift+ s
  2. 在“项目设置”中选择“模块”
  3. 按下+并在您的模块中添加 Hibernate 方面。

现在您已经设置了休眠配置方面,您可以提取 POJO。

  1. 在右下方的水平面板中,您现在将看到一个名为“Persistence”的选项卡(如果您找不到 Persistence 选项卡,您可以通过选择 View > Tool Windows > Persistence 来显示它)
  2. 在那里,您可以右键单击以您的模块命名的休眠图标
  3. 转到“生成持久性映射”-“按数据库模式”
  4. 现在我想你可以找到你的路...
  5. 通常,设置选择您要使用的数据源,现在您可以看到数据源对象中的所有表
  6. 现在您可以做很多事情,使用 + 号添加关系,更改 POJO 属性的名称和类型等。注意:如果您收到错误并且“OK”被禁用,这可能是因为 IntelliJ 为您找到的数据类型POJO 无效。只需将其更改为您需要的那个,您就可以开始使用了!
于 2011-03-10T17:59:15.460 回答
8

在处理带有下划线的表时,默认的脚本扩展 Generate POJOs.groovy不是很好(这很常见)。

所以我做了一些修改。

主要代码

def calcFields(DasObject table) {
    DasUtil.getColumns(table).reduce([]) { fields, col ->
        def spec = Case.LOWER.apply(col.dataType.specification)
        def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
        fields += [[
                       name : javaName(col.name, false),
                       type : typeStr,
                       annos: """
    /**
     * $col.comment
     */"""]]
    }
}

static String javaName(String str, boolean capitalize) {
    def s = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str);
    capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}

你可以在这里找到整个要点https://gist.github.com/aristotll/ad799a7462e8b705b26103944cca24a6

于 2017-07-26T04:17:27.857 回答