# code-genie **Repository Path**: spyhooky/code-genie ## Basic Information - **Project Name**: code-genie - **Description**: 代码天才。就是代码生成器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-08-12 - **Last Updated**: 2024-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Code Factory Code Factory 是一个基于 Spring Boot 的代码生成器,使用 FreeMarker 模板生成代码。该项目提供了一些基本语法介绍在 [FreeMarker.md](FreeMarker.md) 中,并包含了两个使用样例。 #### 介绍 该项目是一个基于 Spring Boot 的代码生成器,旨在帮助开发人员快速生成各种类型的代码文件,包括控制器、服务、数据访问对象、模型实体等。通过使用 FreeMarker 模板引擎,用户可以根据预定义的模板和配置参数,生成符合项目需求的代码文件,大大提高了开发效率。 该代码生成器的设计初衷是为了解决日常开发中重复性劳动的问题,例如手动创建各种模型类、控制器、服务等。通过简单的配置和模板设计,开发人员可以快速生成标准化的代码文件,减少了手动编写代码的工作量,同时提高了代码的一致性和可维护性。 该项目提供了丰富的功能特性,包括灵活的配置选项、多种模板支持、多数据库支持、代码质量保证、测试支持等,使其成为一个强大而易用的代码生成工具。无论是新项目的初始化阶段,还是现有项目的功能扩展,该代码生成器都能够为开发团队节省大量的时间和精力,让开发工作变得更加高效和愉快。 如果您正在寻找一款简单实用、功能强大的代码生成器,那么该项目将是您的理想选择。欢迎您开始使用,并提供宝贵的反馈意见,让我们共同推动该项目的不断发展和完善。 #### 功能特性 以下是该代码生成器提供的主要功能特性: 1. **模板生成代码:** 支持使用 FreeMarker 模板引擎生成各种类型的代码文件,包括控制器、服务、数据访问对象、模型实体等。 2. **灵活配置:** 提供了丰富的配置选项,可以灵活配置项目参数、输出路径等,以满足不同项目的需求。 3. **多种模板支持:** 支持多种模板分类,用户可以根据需要选择合适的模板分类进行代码生成,例如 MyBatis、Spring MVC 等。 4. **多数据库支持:** 支持与多种数据库进行交互,包括 MySQL、Oracle、H2 等,可以根据项目需要选择合适的数据库。 5. **代码质量:** 生成的代码符合编码规范,并提供了良好的注释,可读性高,易于维护和扩展。 6. **测试支持:** 提供了测试样例,并集成了单元测试框架,可以方便地进行代码测试和验证。 7. **易用性:** 设计简单直观,易于上手,提供了详细的文档和示例,帮助用户快速了解和使用代码生成器。 #### 技术栈 - Spring Boot:作为项目的基础框架,提供了快速开发应用程序所需的基础设施和配置。 - Freemarker:用于生成代码的模板引擎,通过模板生成各种类型的代码文件。 - Spring Boot JDBC Starter:用于在 Spring Boot 应用程序中启用 JDBC 支持。 - Groovy Templates:Groovy 模板引擎,提供了在代码生成中使用 Groovy 模板的能力。 - H2 Database、MySQL Connector/J、Oracle JDBC Driver:用于与不同数据库进行交互的 JDBC 驱动程序。 - Lombok:简化 Java 代码的开发,通过注解来减少样板代码。 - Apache Commons IO 和 Lang3:提供了许多常用的工具类,简化了文件操作和其他通用操作。 - Hutool:Java 工具库,提供了各种实用工具类和方法,用于简化开发任务。 - MyBatis Generator:用于自动生成 MyBatis 持久层代码的工具。 - Fastjson:阿里巴巴开源的 JSON 处理工具包,用于处理 JSON 数据。 - Spring Boot Test Starter、JUnit:用于编写和运行单元测试的库。 - Apache POI:用于处理 Microsoft Office 格式文件(例如 Excel)的 Java 库。 #### 软件架构 软件架构是指软件系统中各个组件之间的关系和组织方式。在 Code Factory 中,主要的软件架构可以描述如下: 1. **基于 Spring Boot 框架:** Code Factory 是基于 Spring Boot 框架开发的,Spring Boot 提供了快速构建应用程序的基础设施和配置,包括依赖注入、自动配置等特性。 2. **模板引擎:** Code Factory 使用 Freemarker 作为模板引擎,用于生成代码文件。Freemarker 提供了强大的模板功能,可以根据预定义的模板文件和数据生成各种类型的代码。 3. **数据库交互:** Code Factory 使用 Spring Boot JDBC Starter 以及各种数据库驱动程序(如 MySQL Connector/J、H2 Database、Oracle JDBC Driver)来实现与数据库的交互。通过 JDBC Starter,可以轻松地连接和操作数据库,执行 SQL 查询和更新操作。 4. **工具库和框架:** 在开发过程中,Code Factory使用了许多开源的工具库和框架,如 Lombok、Apache Commons、Hutool 等,这些工具库提供了丰富的实用工具和功能,帮助简化开发任务和提高开发效率。 5. **代码生成器核心功能:** Code Factory 的核心功能是代码生成器,它包括模板加载、参数配置、代码生成等功能模块。通过这些功能,用户可以根据模板和配置生成各种类型的代码文件。 总体来说,Code Factory 的软件架构是基于 Spring Boot 框架,使用 Freemarker 作为模板引擎,借助各种开源工具库和框架来实现功能,提供了一个简单易用、灵活可扩展的代码生成解决方案。 #### 使用说明 ##### 1. 配置项目参数 首先需要配置项目参数,包括项目基本包名、包名、模板分类、作者等信息。 ``` // 配置目标项目信息和作者时间项目包名等信息 ProjectConf conf = ProjectConf.builder() .projectBasePackage("com.swiftops") //项目基础包名 .packageName("basic.sys") //目标包名 .templateClassify("mybatis") //使用模板文件目录 .templatePath(USER_DIR + "/templates") // 模板存放路径 .author("authorName") //作者信息 .date(now) //生成时间 .build(); //或者添加自定义参数 conf.put("参数key", "参数value"); ``` ##### 2. 配置输出路径 ``` 这里配置的路径用来生成文件具体写入的目录,生成器只会生成配置路径的代码文件,如果不想生成某些文件就注释删除或注释某些路径配置 // 配置输出路径 WritePathConf pathConf = WritePathConf.builder() .controller(path + "/controller") .service(path + "/service") .serviceImpl(path + "/serviceImpl") .mapperJava(path + "/dao") .mapperXml(path + "/mapper") .modelEntity(path + "/model") .voEntity(path + "/vo/entity") .voRequest(path + "/vo/request") .voResponse(path + "/vo/response") .build(); conf.pathConf = pathConf; ``` ##### 3. 生成代码 ``` 这里生成的代码是读取sys.txt文件里的表名进行生成代码 generate 方法接收 File 、String... 、List 类型表名参数 // 生成代码 File tableNameFile = FileUtils.getFile(USER_DIR, "FTXT", "sys.txt"); codeGenService.generate(conf, tableNameFile); ``` ##### 4. 模板参数配置 默认参数 [模板参数](template_parameter.md) #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)