web-dev-qa-db-ja.com

IntelliJ IDEA 10 DBモデルからエンティティ(POJO)を生成

IntelliJ IDEA 10.を使用して、データベースモデルからエンティティ(POJO)を生成する方法はありますか。IntelliJで「データソース」を作成しますが、POJOを生成する方法はわかりません。

66
pierre

UPDATE:
IntelliJ 16では、この機能が実装されました。手順は次のとおりです。
1。 データベースコンテキストメニューの表示
2。スクリプト化された拡張機能
3。 POJOを生成する


詳細はこちらをご覧ください:
機能要求:プレーンJDBC開発者向けに「データベーススキーマからクラスを生成」を許可


まず、Hibernateを使用していることをintelliJに伝える必要があります(テーブルのorm pojoが必要かどうかを推測します)

  1. 「プロジェクト構造」に移動します(alt+ctrl+shift+s
  2. 「プロジェクト設定」で「モジュール」を選択します
  3. 押す + モジュールにHibernateファセットを追加します。

これで、休止状態の設定ファセットをセットアップしたので、pojoを抽出できます。

  1. 右下の水平パネルに「永続性」というタブが表示されます(永続性タブが見つからない場合は、[表示]> [ツールウィンドウ]> [永続性]を選択すると表示されます)
  2. そこで、モジュールのような名前の休止状態アイコンを右クリックします。
  3. 「永続マッピングの生成」-「データベーススキーマ別」に進みます。
  4. 今、あなたはあなたの道を見つけることができると思います...
  5. 一般的な設定では、使用するデータソースを選択すると、データソースオブジェクトのすべてのテーブルを見ることができます
  6. これで、多くのことができ、+記号を使用して関係を追加し、pojoのプロパティの名前とタイプを変更できます。 pojoは無効です。必要なものに変更するだけで準備完了です!
118
zpontikas

デフォルト Scripted ExtensionsGenerate 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

7
aristotll