# gencode **Repository Path**: zrq1351/gencode ## Basic Information - **Project Name**: gencode - **Description**: GenCode是一个基于 Java 的springboot代码生成工具,它能够根据数据库表结构自动生成对应的实体类、DAO、Service、ServiceImpl 和 Controller 等各层代码。通过使用 Velocity 模板引擎,可以灵活地定制生成的代码模板,大大提高开发效率。 - **Primary Language**: Unknown - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, 代码生成器, 脚手架, 线程池 ## README # 代码生成工具 (GenCode) GenCode 是一个基于 Java 的代码生成工具,它能够根据数据库表结构自动生成对应的实体类、DAO、Service、ServiceImpl 和 Controller 等各层代码。通过使用 Velocity 模板引擎,可以灵活地定制生成的代码模板,大大提高开发效率。 ## 功能特性 - 根据数据库表结构自动生成 Java 实体类 - 自动生成 DAO 层代码 - 自动生成 Service 层接口及实现类 - 自动生成 Controller 层代码 - 支持自定义代码模板 - 支持自定义包名和类名命名规范 - 支持表名前缀自动移除 - 支持多线程代码生成(可选) - 完善的日志记录功能(支持文件和控制台输出) - 支持 SQL 脚本自动执行 - 使用高性能 HikariCP 数据库连接池 ## 技术栈 - Java 8+ - Maven 3+ - Velocity 模板引擎 - HikariCP 连接池 - Apache Ant (用于执行 SQL) ## 环境要求 - JDK 1.8 或以上版本 - Maven 3.0 或以上版本 - MySQL 数据库 ## 安装使用 ### 1. 克隆项目到本地并安装到本地仓库 ```bash mvn clean install ``` ### 2. 在项目中添加依赖 在您的项目 pom.xml 中添加以下依赖: ```xml com.zrq gencode 0.0.1 ``` ### 3. 配置 `gencode.properties` 文件 在您的项目 resources 目录下创建 `gencode.properties` 配置文件: ```properties # 必填项 gencode.jdbc.driver=com.mysql.cj.jdbc.Driver gencode.jdbc.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai gencode.jdbc.userName=your_username gencode.jdbc.passWord=your_password # 总包名 必填 "."或"/"分割符都可行 gencode.cfg.package=com.example.project # ----------非必填项----------------- # 作者 gencode.cfg.author=Your Name # 是否启用多线程模式 默认为false gencode.cfg.enableMultithreading=false # 多线程任务超时时间(分钟) 默认为10分钟 gencode.cfg.threadPoolTimeoutMinutes=10 # 要去除的表前缀 gencode.cfg.tablePrefix=tbl_,sys_ # 各层包名和类名配置(可选,默认值如下) gencode.cfg.package.entity=entity gencode.cfg.package.service=service gencode.cfg.package.serviceImpl=impl gencode.cfg.package.controller=controller gencode.cfg.package.dao=dao # 类名命名规范(Entity作为占位符会被替换为实际类名) gencode.cfg.package.serviceName=EntityService gencode.cfg.package.serviceImplName=EntityServiceImpl gencode.cfg.package.controllerName=EntityController gencode.cfg.package.daoName=EntityMapper ``` ### 4. 运行代码生成器 在您的项目中创建一个启动类来运行代码生成器: ```java public class CodeGenerator { public static void main(String[] args) { GenCodeApplication.run(); } } ``` ## 模板定制 项目提供了默认的 Velocity 模板文件,位于 `src/main/resources/gencode/` 目录下: - `entity.java.vm`:实体类模板 - `dao.java.vm`:DAO 层模板 - `service.java.vm`:Service 接口模板 - `serviceImpl.java.vm`:Service 实现类模板 - `web.java.vm`:Controller 层模板 可以根据项目需求修改这些模板文件。 ## 项目优化 本项目已经进行了以下优化: 1. **依赖管理优化**: - 统一了日志框架,使用 SLF4J + Logback - 使用高性能 HikariCP 数据库连接池 - 更新了依赖版本,提升安全性与稳定性 2. **性能优化**: - 支持多线程代码生成,提高大批量代码生成效率 - 使用细粒度锁机制,确保多线程环境下的安全性 - 优化 Velocity 模板引擎配置,提高模板处理性能 3. **代码质量优化**: - 增强了异常处理机制 - 完善了日志记录(支持文件输出和日志轮转) - 改进了资源管理(正确关闭数据库连接等资源) 4. **配置优化**: - 增加了多线程开关配置 - 提供了更详细的配置说明 - 提供了完整的配置示例 5. **架构优化**: - 使用 HikariCP 连接池替代直连数据库 - 改进了代码结构和可读性 - 增强了错误处理能力 ## 使用建议 1. **单线程 vs 多线程**: - 绝大多情况下,使用单线程模式足以 2. **模板定制**: - 可以根据团队或项目的编码规范修改 Velocity 模板 - 模板中使用 `gen` 变量访问生成信息 - gen.importList import类路径 - gen.className 实体类名 - gen.author 作者 - gen.date 生成时间 - gen.attributeBases 属性列表信息 - name 属性名 - javaType 属性类型 - gen.daoName - gen.serviceName - gen.servicImplName - gen.controllerName - gen.arg 使用实体类型的参数名(首字母小写的复数形式) - gen.idType id类型 - gen.hasId 是否有id字段来判断是否为中间表。若是中间表要用id字段要自行添加 ## 故障排除 1. **数据库连接失败**: - 检查数据库 URL、用户名、密码配置是否正确 - 确认数据库服务是否正常运行 - 检查网络连接是否正常 2. **无法获取表信息**: - 确认配置的数据库中是否存在表 - 检查数据库用户是否有访问权限 - 查看日志文件获取详细错误信息 3. **多线程性能不佳**: - 检查是否正确启用了多线程配置 - 查看系统资源使用情况(CPU、内存) - 考虑调整线程池相关配置