Pega una sentencia CREATE TABLE y obtén una clase public por tabla: campos private con los tipos SQL traducidos, getter y setter para cada columna y las importaciones de java.math y java.time que hagan falta. Las restricciones, los comentarios y los identificadores entrecomillados se tienen en cuenta y no se sube nada.
Se ejecuta localmente en tu navegadorPega una o varias sentencias CREATE TABLE y pulsa «SQL a clase Java». Cada tabla se convierte en una clase public propia, con un campo private por columna, getter y setter para cada campo y las importaciones de java.math y java.time que necesitan los tipos asignados.
El analizador admite una parte documentada del DDL, no toda la gramática SQL: tipos de columna de MySQL, PostgreSQL, SQL Server, Oracle y SQLite, identificadores con comillas, comillas invertidas o corchetes, comentarios de columna y restricciones de tabla. Todo ocurre en esta pestaña, así que un esquema que no deberías subir a un servidor también se puede convertir aquí.
Las anchuras enteras se respetan: int, integer, smallint, mediumint y serial dan int; bigint da long; tinyint(1) da boolean y el resto de tinyint da int; un int unsigned da long y un bigint unsigned da BigInteger. float, real y double dan double.
decimal y numeric se leen por precisión y escala: escala 0 con hasta 9 dígitos da int, hasta 18 dígitos long y el resto BigDecimal, de modo que decimal(10,2) es BigDecimal y no un double que redondearía el importe. char, varchar, text, json, xml, enum, set y uuid dan String; date, time, datetime y timestamp dan LocalDate, LocalTime, LocalDateTime o, con zona horaria, OffsetDateTime; bit(1) da boolean y bit(n), binary, varbinary y la familia blob dan byte[]. Un tipo no reconocido da Object con una nota // unmapped SQL type, nunca una suposición silenciosa.
Las restricciones de tabla se descartan en lugar de convertirse en campos: se reconocen y omiten PRIMARY KEY (id), KEY, UNIQUE, CONSTRAINT ... FOREIGN KEY, CHECK e INDEX, mientras que una columna con su propia restricción —id int PRIMARY KEY— se conserva. Los comentarios --, # y /* */ se eliminan antes del análisis, incluso si ocuparían el resto de la línea, y los marcadores dentro de una cadena literal se respetan. Un COMMENT 'buyer id' de columna se copia al campo como nota // buyer id.
Los identificadores pierden las comillas: `address_id`, "user name" y [order] salen como addressId, userName y order. snake_case pasa a camelCase, las palabras reservadas de Java reciben un guion bajo inicial (class pasa a _class) y también los nombres que empiezan por dígito (2fa pasa a _2fa); el accesor elimina ese guion, así que el setter es setClass. Cuando el nombre Java difiere del nombre SQL, el campo lleva además una nota // column: ... para que el cambio se vea al revisar.
La conversión ocurre en la página: mientras trabaja no hace ninguna petición y el esquema no se envía a ningún sitio. Los resultados de hasta 120.000 caracteres se colorean; una clase mayor se muestra como texto plano para que la pestaña siga respondiendo. Medido en Chrome en esta página: 500 columnas (94 KB de Java) tardan medio segundo con coloreado, 1.000 columnas (188 KB) unos 30 ms y 2.000 columnas (385 KB) unos 40 ms sin él.
El resultado es un punto de partida, no un mapeo ORM: no hay anotaciones JPA ni Hibernate, ni Lombok, ni constructores, equals, hashCode o toString, ni relaciones de clave ajena, ni nulabilidad: una columna NOT NULL no se marca. Revisa nombres y tipos contra el esquema antes de llevar la clase a un proyecto; para una muestra JSON usa la página JSON a clase Java.