IntelliJ IDEA 10从数据库模型生成实体(POJO)


78

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

Answers:


133

更新:
在IntelliJ 16中,此功能现已实现。为此,请执行以下步骤:
1.数据库视图上下文菜单
2.脚本扩展
3.生成POJO


您可以在此处了解更多信息:
功能请求:允许“纯数据库开发人员从数据库模式生成类”


注意: 以下信息是关于版本15和更早版本的:

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

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

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

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

4
也可以使用JPA构面
nahab

9
这些构面仅在旗舰版中可用
zpontikas 2014年

4
非常感谢。我可以添加的所有内容:如果找不到步骤1中提到的“持久性”选项卡或面板,则可以通过选择“视图”>“工具Windows”>“持久性”来显示它。
Andrei Rykhalski 2015年

1
我单击它没有任何反应
Kalpesh Soni '18

3
在“现在我想您可以找到自己的路”之后,它对我来说失败了。我选择源和表格。然后,它需要“映射XML”或“ JPA批注”。选择映射XML时,无法输入目录。当我选择注释时,它想要一个会话工厂,当我尝试添加会话工厂时,它抱怨没有源根,但是有一个源根。它还说它想要一个“持久性单元”。如果我为每个实体选择单独的XML,则表示执行OR生成,但是什么也没有生成。
Florian F

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.