Ruhezustand Tools, mit denen die entsprechende Entitätsklasse basierend auf der Tabellendefinition und der VIEW-Definition sofort erstellt werden kann. Es ist sehr praktisch, aber standardmäßig werden numerische Typen als primitive Typen erstellt. Wenn der DB-Wert null enthalten kann, ist dies NG. Ich habe nach einer Einstellung gesucht, die in den entsprechenden Referenztyp konvertiert werden kann (null ist im Gegensatz zum primitiven Typ akzeptabel), aber sie ist nicht herausgekommen ... Wenn dies der Fall ist, ist es schneller zu schaffen! Also habe ich ein Werkzeug gemacht, um das oben genannte zu realisieren.
So erstellen Sie eine Entitätsklasse in den Tools für den Ruhezustand
Da es in ausführlich beschrieben wird, werde ich es in diesem Artikel weglassen.
Der MySQL-Datentyp (im Folgenden MySQL), der von Hibernate Tools (im Folgenden Hibernate Tools) ausgegebene Java-Datentyp und die entsprechenden Referenztypen lauten wie folgt. (Dies ist das Ausgabeergebnis der tatsächlichen Ausführung von Hibernate Tools.)
MySQL | HibernateTools(Java) | Entsprechender Referenztyp(Java) |
---|---|---|
INTEGER | int | Integer |
INT | int | Integer |
TINYINT | byte | Byte |
SMALLINT | short | Short |
MEDIUMINT | int | Integer |
BIGINT | BigInteger | - |
DECIMAL | BigDecimal | - |
NUMERIC | BigDecimal | - |
FLOAT | float | Float |
DOUBLE | double | Double |
BIT | byte | Byte |
Da BigInteger und BigDecimal Referenztypen sind, ist keine Konvertierung erforderlich, sodass die entsprechenden Referenztypen nicht geschrieben werden. Trotzdem wird INTEGER als Integer und BIGINT so lange ausgegeben, nicht wahr?
Basierend auf dem oben Gesagten habe ich den VBA-Code erstellt. (Es gibt einige andere Konvertierungen als den numerischen Typ.)
python
Sub macro_for_entity_class_java()
Dim filePath As String 'Zum Abrufen des Dateipfads
Dim javaFile As String 'Für die Java-Dateierfassung
Dim FSO As Object 'Zur Dateiverarbeitung
Dim replaceContent As String 'Zur Konvertierung von Zeichenfolgen
Dim reg As Object 'Für Objekte mit regulären Ausdrücken (@Wird verwendet, um JoinColumn zu ersetzen.
Set reg = CreateObject("VBScript.RegExp") 'Einstellungen für Objekte mit regulären Ausdrücken
'Holen Sie sich den Pfad der Excel-Datei
filePath = ThisWorkbook.Path
'Holen Sie sich die Java-Datei in dieselbe Datei wie die Excel-Datei
javaFile = Dir(filePath & "\*.java")
'Öffnen Sie die Java-Dateien der Reihe nach und führen Sie die Verarbeitung aus
Do While javaFile <> ""
'Öffnen Sie eine Java-Datei und lesen Sie den Inhalt
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.GetFile(filePath & "\" & javaFile).OpenAsTextStream
replaceContent = .ReadAll
.Close
End With
' boolean → Boolean
replaceContent = replace(replaceContent, "private boolean", "private Boolean")
replaceContent = replace(replaceContent, "public boolean get", "public Boolean get")
replaceContent = replace(replaceContent, "(boolean", "(Boolean")
' byte → Byte
replaceContent = replace(replaceContent, "private byte", "private Byte")
replaceContent = replace(replaceContent, "public byte get", "public Byte get")
replaceContent = replace(replaceContent, "(byte", "(Byte")
' short → Short
replaceContent = replace(replaceContent, "private short", "private Short")
replaceContent = replace(replaceContent, "public short get", "public Short get")
replaceContent = replace(replaceContent, "(short", "(Short")
' int → Integer
replaceContent = replace(replaceContent, "private int", "private Integer")
replaceContent = replace(replaceContent, "public int get", "public Integer get")
replaceContent = replace(replaceContent, "(int", "(Integer")
' long → Long
replaceContent = replace(replaceContent, "private long", "private Long")
replaceContent = replace(replaceContent, "public long get", "public Long get")
replaceContent = replace(replaceContent, "(long", "(Long")
' float → Float
replaceContent = replace(replaceContent, "private float", "private Float")
replaceContent = replace(replaceContent, "public float get", "public Float get")
replaceContent = replace(replaceContent, "(float", "(Float")
' double → Double
replaceContent = replace(replaceContent, "private double", "private Double")
replaceContent = replace(replaceContent, "public double get", "public Double get")
replaceContent = replace(replaceContent, "(double", "(Double")
'Objekt → Zeichenfolge (gegen JSON-Typ; ohne Klassen für PK)
If InStr(javaFile, "PK.java") = 0 Then
replaceContent = replace(replaceContent, "private Object", "private String")
replaceContent = replace(replaceContent, "public Object get", "public String get")
replaceContent = replace(replaceContent, "(Object", "(String")
End If
' @"Einfügbar" in JoinColumn= false, updatable ="Falsch" hinzugefügt
reg.Pattern = "(.+?)@JoinColumn\((.+?)\)"
reg.IgnoreCase = False
reg.Global = True
replaceContent = reg.replace(replaceContent, "$1@JoinColumn($2, insertable = false, updatable = false)")
'Löschen Sie die Originaldatei und geben Sie die Datei aus, die den Inhalt nach dem Ersetzen beschreibt
FSO.GetFile(filePath & "\" & javaFile).Delete
FSO.CreateTextFile (filePath & "\" & javaFile)
With FSO.GetFile(filePath & "\" & javaFile).OpenAsTextStream(8)
.Write replaceContent
.Close
End With
'Holen Sie sich die folgende Java-Datei
javaFile = Dir
Loop
End Sub
--2020 / 06/17: Datentyp-Korrespondenztabelle hinzugefügt und einige Inhalte korrigiert --2020 / 06/19: Die Konvertierungsmethode von JSON zu Java-Objekt wurde hinzugefügt und zukünftige Probleme gelöscht. --2020 / 07/05: Verarbeitung hinzugefügt, die dem JPA-Fehler "Wiederholte Spalte bei der Zuordnung für Entität" entspricht, GitHub-Repository hinzugefügt
■VBA
■MySQL
■Java
Recommended Posts