Fügen Sie eine CREATE-TABLE-Anweisung ein und erhalten Sie eine public-Klasse pro Tabelle: private Felder mit übersetzten SQL-Typen, Getter und Setter für jede Spalte sowie die benötigten Imports aus java.math und java.time. Constraints, Kommentare und Bezeichner in Anführungszeichen werden berücksichtigt, hochgeladen wird nichts.
Läuft lokal in deinem BrowserFügen Sie eine oder mehrere CREATE-TABLE-Anweisungen ein und drücken Sie „SQL zu Java-Klasse“. Jede Tabelle wird zu einer eigenen public-Klasse: ein private-Feld pro Spalte, Getter und Setter für jedes Feld und die Imports aus java.math und java.time, die die zugeordneten Typen benötigen.
Der Parser deckt einen dokumentierten Teil des DDL ab, nicht die ganze SQL-Grammatik: Spaltentypen aus MySQL, PostgreSQL, SQL Server, Oracle und SQLite, Bezeichner mit Backticks, Anführungszeichen oder eckigen Klammern, Spaltenkommentare und Tabellen-Constraints. Alles läuft in diesem Tab, deshalb lässt sich auch ein Schema umwandeln, das Sie nicht hochladen dürfen.
Ganzzahlbreiten bleiben erhalten: int, integer, smallint, mediumint und serial werden zu int, bigint zu long, tinyint(1) zu boolean, andere tinyint-Breiten zu int, ein unsigned int zu long und ein unsigned bigint zu BigInteger. float, real und double werden zu double.
decimal und numeric werden über Precision und Scale gelesen: Scale 0 mit bis zu 9 Stellen wird int, bis 18 Stellen long, alles andere BigDecimal — decimal(10,2) ist also BigDecimal und kein double, das Beträge runden würde. char, varchar, text, json, xml, enum, set und uuid werden String; date, time, datetime und timestamp werden LocalDate, LocalTime, LocalDateTime oder mit Zeitzone OffsetDateTime; bit(1) wird boolean, bit(n), binary, varbinary und die blob-Familie werden byte[]. Ein unbekannter Typ wird Object mit dem Hinweis // unmapped SQL type — nie eine stillschweigende Annahme.
Tabellen-Constraints werden verworfen, statt zu Feldern zu werden: PRIMARY KEY (id), KEY, UNIQUE, CONSTRAINT ... FOREIGN KEY, CHECK und INDEX werden erkannt und übersprungen, während eine Spalte mit eigener Einschränkung — id int PRIMARY KEY — als Feld erhalten bleibt. Kommentare in Form von --, # oder /* */ werden vor dem Parsen entfernt, auch wenn sie den Rest der Zeile einnehmen würden; Kommentarzeichen innerhalb eines String-Literals bleiben unangetastet. Ein Spaltenkommentar COMMENT 'buyer id' wird als Notiz // buyer id an das Feld geschrieben.
Bezeichner verlieren ihre Anführungszeichen: `address_id`, "user name" und [order] werden zu addressId, userName und order. snake_case wird camelCase, von Java reservierte Namen erhalten einen Unterstrich am Anfang (class wird _class), ebenso Namen, die mit einer Ziffer beginnen (2fa wird _2fa); der Accessor lässt diesen Unterstrich weg, der Setter heißt also setClass. Weicht der Java-Name vom SQL-Namen ab, trägt das Feld zusätzlich die Notiz // column: ..., damit die Umbenennung beim Prüfen sichtbar bleibt.
Die Umwandlung läuft in der Seite: während der Arbeit sendet das Werkzeug keine Anfrage, und das Schema wird nirgendwohin übertragen. Ergebnisse bis 120.000 Zeichen werden syntaktisch hervorgehoben; eine größere Klasse wird als reiner Text ausgegeben, damit der Tab bedienbar bleibt. In Chrome auf dieser Seite gemessen: 500 Spalten (94 KB Java) brauchen mit Hervorhebung etwa eine halbe Sekunde, 1.000 Spalten (188 KB) etwa 30 ms und 2.000 Spalten (385 KB) etwa 40 ms ohne sie.
Das Ergebnis ist ein Ausgangspunkt, kein ORM-Mapping: keine JPA- oder Hibernate-Annotationen, kein Lombok, keine Konstruktoren, equals, hashCode oder toString, keine Fremdschlüsselbeziehungen und keine Nullability — eine NOT-NULL-Spalte wird nicht markiert. Prüfen Sie Namen und Typen am Schema, bevor die Klasse in ein Projekt wandert; für ein JSON-Beispiel nutzen Sie die Seite JSON zu Java-Klasse.