做项目时,你是不是也经常对着数据库表一条条字段手动创建实体类?字段少还好说,碰上几十个字段的表,光是 private String xxx; 就能写到手抽筋。其实这事儿早就有更聪明的解法——实体类生成方法,能把重复劳动一键搞定。
为啥要自动生成实体类?
举个例子,你在做一个电商后台,商品表有 id、name、price、stock、category_id、create_time 等十几个字段。如果每个表都手动写 getter、setter、toString,不仅耗时,还容易出错。更别提后期改字段名还得同步改一堆代码。这时候,用工具自动生成实体类,效率直接翻倍。
常见的生成方式有哪些?
最常用的几种方法包括:使用 MyBatis Generator、JPA 的注解配合 IDE 插件、或者自己写脚本从数据库元信息提取字段。
比如用 MyBatis Generator,配置好数据库连接和表名,运行一下就能生成对应的实体类、Mapper 接口和 XML 文件。配置文件长这样:
<?xml version="1.0" encoding="UTF-8"?>
<generatorConfiguration>
<context id="test" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/shop"
userId="root" password="123456"/>
<javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java"/>
<table tableName="product" domainObjectName="Product"/>
</context>
</generatorConfiguration>
运行之后,Product.java 就自动生成了,字段、注解、基本方法全都有。
IDE 插件也能快速搞定
如果你用的是 IntelliJ IDEA,可以装一个叫 “JPA Buddy” 或者 “Easy Code” 的插件。连上数据库,选中一张表,右键“Generate Entity”,几秒钟就出结果。支持自定义模板,比如要不要加 Lombok 注解,要不要实现 Serializable,都可以提前设好。
比如你想用 @Data 简化代码,生成的类会是这样:
import lombok.Data;
@Data
public class Product {
private Long id;
private String name;
private Double price;
private Integer stock;
private Long categoryId;
private java.util.Date createTime;
}
没了满屏的 getter/setter,看起来清爽多了。
自己写脚本也不难
有些团队喜欢定制化流程,可以直接查 information_schema.columns 表,把字段名、类型、注释都捞出来,用模板引擎(比如 Freemarker 或 Velocity)拼成 Java 类。这种方式灵活度高,适合统一规范管理。
比如执行这条 SQL:
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'shop' AND TABLE_NAME = 'product';
拿到数据后,套个模板就能输出标准实体类。下次换表,改个表名就行。
现在新项目几乎没人手写实体类了。花半小时搭个生成流程,后面省下的时间够喝好几杯咖啡。工具就在那儿,用不用,差别真的挺大。