IntelliJ IDEA 10 generiert eine Entität (POJO) aus dem DB-Modell

78

Wie kann ich mit IntelliJ IDEA 10 eine Entität (POJO) aus dem Datenbankmodell generieren? Ich erstelle in IntelliJ eine "Datenquelle", habe aber keine Ahnung, wie ich das POJO generieren kann.

Pierre
quelle

Antworten:

133

UPDATE:
In IntelliJ 16 ist diese Funktion jetzt implementiert. Die Schritte dazu sind:
1. Kontextmenü der Datenbankansicht
2. Skripterweiterungen
3. Generieren Sie POJOs


Weitere Informationen finden Sie hier:
Funktionsanforderung: Ermöglichen Sie "Klassen aus Datenbankschema generieren" für JDBC-Entwickler


Hinweis: Die folgenden Informationen beziehen sich auf Version 15 und früher:

Zuerst müssen Sie IntelliJ mitteilen, dass Sie den Ruhezustand verwenden (ich denke, Sie sind es, wenn Sie das orm POJO der Tabelle benötigen).

  1. Gehen Sie zu "Projektstruktur" ( alt+ ctrl+ shift+ s)
  2. Wählen Sie in "Projekteinstellungen" "Module"
  3. Drücken Sie +und fügen Sie die Ruhezustand-Facette in Ihr Modul ein.

Nachdem Sie Ihre Konfigurationsfacette für den Ruhezustand eingerichtet haben, können Sie Ihre POJOs extrahieren.

  1. Im unteren rechten horizontalen Bereich sehen Sie jetzt eine Registerkarte mit dem Namen "Persistenz" (wenn Sie die Registerkarte "Persistenz" nicht finden können, können Sie sie anzeigen, indem Sie "Ansicht"> "Werkzeugfenster"> "Persistenz" wählen.)
  2. Dort können Sie mit der rechten Maustaste auf das Ruhezustandssymbol klicken, das wie Ihr Modul benannt ist
  3. Gehen Sie zu "Persistenzzuordnung generieren" - "Nach Datenbankschema".
  4. Jetzt kannst du dich wohl zurechtfinden ...
  5. Im Allgemeinen wählen Einstellungen die Datenquelle aus, die Sie verwenden möchten, und jetzt können Sie alle Tabellen in Ihrem Datenquellenobjekt anzeigen
  6. Jetzt können Sie viele Dinge tun, Beziehungen zum + -Zeichen hinzufügen, den Namen und den Typ der POJO-Eigenschaften ändern usw. Hinweis: Wenn Sie eine Fehlermeldung erhalten und das "OK" deaktiviert ist, liegt dies wahrscheinlich daran, dass der Datentyp, den IntelliJ für Sie gefunden hat POJO ist ungültig. Ändern Sie es einfach auf das, was Sie brauchen und Sie sind bereit zu gehen!
zpontikas
quelle
4
Auch JPA Facette kann auch verwendet werden
nahab
9
Diese Facetten sind nur in der Ultimate-Version verfügbar
zpontikas
4
Danke vielmals. Alles, was ich hinzufügen kann: Wenn Sie die in Schritt 1 erwähnte Registerkarte oder das Bedienfeld Persistenz nicht finden, können Sie sie anzeigen, indem Sie Ansicht> Werkzeugfenster> Persistenz wählen.
Andrei Rykhalski
1
Ich
klicke
3
Nach "Jetzt können Sie wohl Ihren Weg finden" scheitert es für mich. Ich wähle die Quelle und die Tabellen aus. Dann möchte es "XML-Mapping" oder "JPA-Annotationen". Wenn ich Mappings XML auswähle, kann ich kein Verzeichnis eingeben. Wenn ich Annotation auswähle, möchte es eine Sitzungsfactory. Wenn ich versuche, eine Session Factory hinzuzufügen, wird beanstandet, dass es keinen Quellstamm gibt, aber einen. Es heißt auch, dass es eine "Persistenz-Einheit" will, was auch immer das ist. Wenn ich separates XML pro Entität auswähle, heißt es, dass die OR-Generierung durchgeführt wird, aber dann wird nichts generiert.
Florian F
8

Die Standard- Skripterweiterungen Generate POJOs.groovy sind nicht sehr gut, wenn Tabellen mit Unterstrich behandelt werden (was sehr häufig vorkommt).

Also nehme ich einige Änderungen vor.

Der Hauptcode

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]
}

Den gesamten Inhalt finden Sie hier https://gist.github.com/aristotll/ad799a7462e8b705b26103944cca24a6

aristotll
quelle