# codegenerator **Repository Path**: linjie92/codegenerator ## Basic Information - **Project Name**: codegenerator - **Description**: java代码生成工具,依据数据表字段可根据自定义模板生成符合项目规范的代码。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-22 - **Last Updated**: 2025-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java代码生成器 一个基于 Electron 的 Java 代码生成器,可根据数据表按模板生成对应的代码。可自定义模版。 ![Example Image](./static/image/界面.png) ## 快速开始 ```bash # 安装依赖 npm install # 运行 npm start ``` ## 打包发布 ```bash # 清理旧的构建文件 rm -rf dist && rm -rf release # 构建前端代码 npm run build # 打包所有平台 npm run dist # 打包 Mac 版本 (生成 DMG 和 ZIP) npm run dist:mac # 打包 Windows 版本 npm run dist --win # 打包 Linux 版本 npm run dist --linux # 仅打包不生成安装包 (用于测试) npm run pack ``` **打包后的文件位置:** - 打包文件会生成在 `release/` 目录下 - Mac: `代码生成器-1.0.0-arm64.dmg` 和 `代码生成器-1.0.0-arm64-mac.zip` - Windows: `代码生成器 Setup 1.0.0.exe` 和 `代码生成器-1.0.0-win.zip` - Linux: `代码生成器-1.0.0.AppImage` 和 `代码生成器_1.0.0_amd64.deb` ## 模板变量说明 ### 1. 包相关变量 - {{package.base}} - 基础包名 - {{package.module}} - 模块名 ### 2. 表相关变量 - {{table.name}} - 表名 - {{table.className}} - 类名(首字母大写) 例如:表user_info -> UserInfo - {{table.classNameLower}} - 类名(首字母小写) 例如:表user_info -> userInfo - {{table.nameLower}} - 类名全小写 例如:表user_info -> userinfo - {{table.comment}} - 表注释 - {{table.fields}} - 字段列表,每个字段包含以下属性: - columnName: 数据库字段名 例如:user_name - fieldName: Java字段名(首字母小写) 例如:user_name -> userName - fieldNameUpper: Java字段名(首字母大写) 例如:user_name -> UserName - javaType: Java类型 - comment: 字段注释 - isPrimaryKey: 是否主键 - {{table.excludeFields}} - 排除的字段列表 ### 3. 工具变量 - {{author}} - 作者 - {{date}} - 当前日期 - {{serialVersionUID}} - 序列化ID(19位数字,根据类名自动生成且唯一) - {{hasDate}} - 是否包含日期类型字段(true/false) - {{hasBigDecimal}} - 是否包含BigDecimal类型字段(true/false) ### 4. 全局自定义变量 【暂未实现】 - {{vars.xxx}} - 全局变量 ### 5.条件语句 ```xml {{#if condition}} // 代码块 {{else}} // 代码块 {{/if}} ``` ### 6. 循环语句 ```xml {{#each table.fields}} // 代码块 // {{javaType}} {{fieldName}}; {{/each}} ``` ## 模板代码示例(详细可参考默认模板 /templates/**) ### Java实体类 ```java package {{package.base}}.entity; import lombok.Data; import java.io.Serializable; {{#if hasDate}} import java.util.Date; {{/if}} {{#if hasBigDecimal}} import java.math.BigDecimal; {{/if}} /** * {{table.comment}} * @author {{author}} * @date {{date}} */ @Data public class {{table.className}} implements Serializable { private static final long serialVersionUID = {{serialVersionUID}}L; {{#each table.fields}} /** * {{comment}} */ private {{javaType}} {{fieldName}}; {{/each}} } ``` ### mapper.xml ```xml INSERT INTO {{table.name}} ( ) VALUES ( {{#each table.fields}} // 普通循环 #{ {{fieldName}} }{{#if @last}}{{else}},{{/if}} // 判断是否是最后一个 {{/each}} ) DELETE FROM {{table.name}} WHERE id = #{id} UPDATE {{table.name}} {{#each table.fields}} {{#if (includes ../table.excludeFields columnName)}} // 循环时,排除字段 {{else}} {{columnName}} = #{ {{fieldName}} }{{#if @last}}{{else}},{{/if}} {{/if}} {{/each}} WHERE id = #{id} ```