Collez une instruction CREATE TABLE et obtenez une classe public par table : champs private aux types SQL convertis, getter et setter pour chaque colonne et les imports java.math et java.time nécessaires. Les contraintes, commentaires et identifiants entre délimiteurs sont pris en compte, et rien n’est téléversé.
Fonctionne localement dans votre navigateurCollez une ou plusieurs instructions CREATE TABLE puis cliquez sur « Convertir en classe Java ». Chaque table devient une classe public : un champ private par colonne, un getter et un setter pour chaque champ, et les imports java.math et java.time nécessaires aux types retenus.
L’analyse couvre une partie documentée du DDL, pas toute la grammaire SQL : types de colonnes MySQL, PostgreSQL, SQL Server, Oracle et SQLite, identifiants entre accents graves, guillemets ou crochets, commentaires de colonne et contraintes de table. Tout se passe dans cet onglet : un schéma que vous n’avez pas le droit de téléverser peut donc être converti ici.
Les largeurs entières sont respectées : int, integer, smallint, mediumint et serial donnent int, bigint donne long, tinyint(1) donne boolean et les autres tinyint donnent int, un int unsigned donne long et un bigint unsigned donne BigInteger. float, real et double donnent double.
decimal et numeric sont lus selon la précision et l’échelle : échelle 0 jusqu’à 9 chiffres donnent int, jusqu’à 18 chiffres long, le reste BigDecimal — decimal(10,2) devient donc BigDecimal et non un double qui arrondirait des montants. char, varchar, text, json, xml, enum, set et uuid donnent String ; date, time, datetime et timestamp donnent LocalDate, LocalTime, LocalDateTime ou, avec fuseau horaire, OffsetDateTime ; bit(1) donne boolean et bit(n), binary, varbinary ainsi que la famille blob donnent byte[]. Un type non reconnu donne Object avec la note // unmapped SQL type, jamais une supposition silencieuse.
Les contraintes de table sont écartées au lieu de devenir des champs : PRIMARY KEY (id), KEY, UNIQUE, CONSTRAINT ... FOREIGN KEY, CHECK et INDEX sont reconnues et ignorées, alors qu’une colonne portant sa propre contrainte — id int PRIMARY KEY — reste un champ. Les commentaires --, # et /* */ sont retirés avant l’analyse, y compris lorsqu’ils occuperaient la fin de la ligne, et les marqueurs situés dans une chaîne littérale sont préservés. Un COMMENT 'buyer id' de colonne est recopié sur le champ sous forme de note // buyer id.
Les identifiants perdent leurs délimiteurs : `address_id`, "user name" et [order] deviennent addressId, userName et order. snake_case devient camelCase, un nom réservé par Java reçoit un souligné initial (class devient _class) et un nom commençant par un chiffre aussi (2fa devient _2fa) ; l’accesseur supprime ce souligné, le setter est donc setClass. Quand le nom Java diffère du nom SQL, le champ porte en plus la note // column: ..., ce qui garde le renommage visible pendant la relecture.
La conversion se fait dans la page : pendant le travail, aucun appel réseau n’est effectué et le schéma n’est envoyé nulle part. Les résultats jusqu’à 120 000 caractères sont colorés ; une classe plus longue est affichée en texte brut pour que l’onglet reste réactif. Mesuré dans Chrome sur cette page : 500 colonnes (94 Ko de Java) demandent environ une demi-seconde avec coloration, 1 000 colonnes (188 Ko) environ 30 ms et 2 000 colonnes (385 Ko) environ 40 ms sans coloration.
Le résultat est un point de départ, pas un mapping ORM : aucune annotation JPA ou Hibernate, pas de Lombok, pas de constructeur, equals, hashCode ni toString, aucune relation de clé étrangère et aucune nullabilité — une colonne NOT NULL n’est pas signalée. Vérifiez noms et types sur le schéma avant d’intégrer la classe à un projet ; pour un exemple JSON, utilisez la page JSON vers classe Java.