如何根据JS配置文件在Spring Boot(Java)中批量生成实体类?
解决方案:Node.js脚本自动批量生成JPA实体类
直接用Node.js读取你的data.js配置,批量输出符合Spring Data JPA规范的@Entity实体类,全程无需手动编写重复代码。
第一步:确认data.js结构
我们默认你的data.js导出结构如下,如果你实际结构有差异,调整脚本中对应的字段读取逻辑即可:
// data.js 示例 module.exports = [ { key: "send-template-and-sign", form: ["templateId", "signerName", "notifyEmail", "expireTime"] }, { key: "upload-and-auto-send", form: ["fileUrl", "receiverList", "sendTime", "remark"] } ]
第二步:编写自动生成脚本
在data.js同级目录新建entity-generator.js,代码如下:
const fs = require('fs'); const path = require('path'); const entityConfigs = require('./data.js'); // 配置项:根据你的项目调整 const OUTPUT_DIR = path.join(__dirname, './entities'); // 实体类输出目录 const PACKAGE_NAME = 'com.yourproject.entity'; // 你的实体类包名 // 驼峰命名转换工具 const toPascalCase = (str) => { return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase()) .replace(/^[a-z]/, (match) => match.toUpperCase()); }; const toCamelCase = (str) => { return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase()); }; // 初始化输出目录 if (!fs.existsSync(OUTPUT_DIR)) { fs.mkdirSync(OUTPUT_DIR, { recursive: true }); } // 遍历所有配置生成实体类 entityConfigs.forEach(config => { const entityName = toPascalCase(config.key); const fields = config.form; const filePath = path.join(OUTPUT_DIR, `${entityName}.java`); // 拼接实体类内容 let content = `package ${PACKAGE_NAME}; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class ${entityName} { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; `; // 拼接所有form定义的String字段 fields.forEach(field => { const camelField = toCamelCase(field); content += ` private String ${camelField};`; }); // *如果不用Lombok,把上面的@Getter/@Setter删掉,用下面的代码生成getter/setter // fields.forEach(field => { // const camelField = toCamelCase(field); // const pascalField = toPascalCase(field); // content += ` // public String get${pascalField}() { // return ${camelField}; // } // // public void set${pascalField}(String ${camelField}) { // this.${camelField} = ${camelField}; // }`; // }); // // // 主键id的getter/setter // content += ` // public Long getId() { // return id; // } // // public void setId(Long id) { // this.id = id; // }`; content += ` } `; // 写入文件 fs.writeFileSync(filePath, content); console.log(`已生成实体类:${entityName}.java`); });
第三步:运行生成
- 调整脚本中的
PACKAGE_NAME为你项目实体类的实际包路径 - 如果你的项目没有引入Lombok,注释掉Lombok相关代码,放开下方手动生成getter/setter的代码块
- 终端执行命令运行脚本:
node entity-generator.js - 生成的所有实体类会自动输出到你配置的
OUTPUT_DIR目录下,直接复制到你的Spring Boot项目对应的包路径即可使用。
生成效果示例
以上面的send-template-and-sign配置为例,生成的实体类如下:
package com.yourproject.entity; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class SendTemplateAndSign { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String templateId; private String signerName; private String notifyEmail; private String expireTime; }
内容的提问来源于stack exchange,提问作者Marco Castillo
相关产品推荐
相关产品推荐

