SQL 转实体类
SQL 转实体类在线工具,CREATE TABLE 一键生成 Java(含 @Id 注解)、C# 与 TypeScript 实体,智能识别字段类型映射、主键、可空与注释,本地处理不上传,完全免费
常见问题
支持哪些数据库方言?
按标准 CREATE TABLE 语法解析,MySQL 写法支持最好。存储引擎、字符集等表选项会被忽略。
主键会标注出来吗?
会。生成 Java 时给主键字段加 @Id 注解,方便配合 JPA 使用。
字段类型怎么映射?
按常见对应关系转换,例如 varchar 转 String、int 转 Integer、datetime 转 Date。自定义类型建议生成后手工核对。
关于这个工具
粘贴一段 CREATE TABLE,生成 Java(带 @Id)、C# 或 TypeScript 实体。类名可自定义,留空则按表名推导(user_info → UserInfo)。
这里的重点是「切字段不会切错」。建表语句里满是逗号:decimal(10,2)、enum('new','done')、COMMENT '主键, 自增'、PRIMARY KEY (id, uid)。按逗号直接 split 的工具会把这些行切碎,导致类型丢失、复合主键只剩第一个、注释被截断。本工具按括号深度与引号状态切分,上述写法都能正确解析。
主键两种写法都识别:表级 PRIMARY KEY (...)(含复合主键)与行内 `id` int PRIMARY KEY。
类型映射里几个容易踩的点:tinyint(1) 映射为 boolean(MySQL 拿它当布尔用),但 tinyint(4) 也是 Boolean —— 如果你存的是小整数,需要手工改回 Integer / number;bigint 在 Java 是 Long、在 TS 是 number(超过 2^53 的雪花 ID 在 TS 里会丢精度,建议改成 string);decimal 在 Java 用 BigDecimal(不要用 double,会丢精度),TS 只有 number;datetime / timestamp 在 Java 用 LocalDateTime、C# 用 DateTime、TS 用 string(ISO 字符串);未收录的类型按语言兜底 —— Java / C# 是 string,TS 是 string。
TS 里的可空写成 | null 而不是 ?:数据库的「可空」意味着字段一定存在、值可能是 null;而可选属性 ? 表示调用方可以不传。两者语义不同,混用会让前后端对不上。
不做的事:不生成 getter/setter、不生成 Lombok 注解、除 @Id 外不加 JPA 注解、不解析外键与索引、不处理 ALTER TABLE。要完整 ORM 映射,请用 IDEA / MyBatis 生成器。