You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据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`);
});

第三步:运行生成

  1. 调整脚本中的PACKAGE_NAME为你项目实体类的实际包路径
  2. 如果你的项目没有引入Lombok,注释掉Lombok相关代码,放开下方手动生成getter/setter的代码块
  3. 终端执行命令运行脚本:
    node entity-generator.js
  4. 生成的所有实体类会自动输出到你配置的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:57:04