本页导航
menu
代码生成器
AI摘要
本文介绍了基于Spring Boot和Velocity的代码生成器,详细说明了其特性、快速启动配置、使用方法和字段级别的配置支持。代码生成器支持自动根据数据库表结构生成项目代码,提供预览、生成和下载功能。用户可以通过配置文件自定义模板路径、生成模式及排除特定表,满足不同项目需求。该工具显著提高开发效率,简化了代码编写流程。
Spring Boot 代码生成器
基于Spring Boot + Velocity的代码生成器,用于快速生成项目代码,提高开发效率。
简介
这是一个基于Spring Boot 的代码生成器,支持通过数据库表结构自动生成Controller、Service、Mapper、Entity等相关代码,大幅提高开发效率。
特性
- 使用Velocity模板引擎生成代码
- 支持自定义模板
- 支持多种代码生成模式
- 支持字段级别的配置(表单显示、列表显示、查询条件等)
- 支持代码预览和下载
快速开始
_1. 基本配置
_1.1 引入依赖
info
在您的Spring Boot项目的pom.xml中添加以下依赖
Spring Boot 2(java8)
<dependency>
<groupId>io.github.liyao52033</groupId>
<artifactId>spring-boot-starter-codegen</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>io.github.liyao52033</groupId>
<artifactId>ErrorCode-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
Spring Boot 3(java17)
<dependency>
<groupId>io.github.liyao52033</groupId>
<artifactId>liyao-spring-boot3-starter-codegen</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>io.github.liyao52033</groupId>
<artifactId>liyao-spring-boot3-starter-ErrorCode</artifactId>
<version>1.2.0</version>
</dependency>
_1.2 配置mysql与mybatis-plus
// 引入相关依赖并配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: mysql账号
password: mysql密码
// 依赖中用到了mybatis-plus,直接配置即可
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:mapper/*.xml
global-config:
db-config:
logic-delete-field: isDelete # 全局逻辑删除的实体字段名
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
_1.3 新建数据库表
-- ----------------------------
-- Table structure for gen_config
-- ----------------------------
DROP TABLE IF EXISTS `gen_config`;
CREATE TABLE `gen_config` (
`id` bigint NOT NULL,
`tableName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '表名',
`moduleName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模块名',
`packageName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '包名',
`businessName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '业务名',
`entityName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '实体类名',
`author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '作者',
`parentMenuId` bigint NULL DEFAULT NULL COMMENT '父目录id',
`createTime` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_tablename`(`tableName` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '代码生成基础配置表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for gen_field_config
-- ----------------------------
DROP TABLE IF EXISTS `gen_field_config`;
CREATE TABLE `gen_field_config` (
`id` bigint NOT NULL,
`configId` bigint NOT NULL COMMENT '关联的配置ID',
`columnName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`columnType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`columnLength` int NULL DEFAULT NULL,
`fieldName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字段名称',
`fieldType` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '字段类型',
`fieldSort` int NULL DEFAULT NULL COMMENT '字段排序',
`fieldComment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '字段描述',
`maxLength` int NULL DEFAULT NULL,
`isRequired` tinyint(1) NULL DEFAULT NULL COMMENT '是否必填',
`isShowInList` tinyint(1) NULL DEFAULT 0 COMMENT '是否在列表显示',
`isShowInForm` tinyint(1) NULL DEFAULT 0 COMMENT '是否在表单显示',
`isShowInQuery` tinyint(1) NULL DEFAULT 0 COMMENT '是否在查询条件显示',
`queryType` tinyint NULL DEFAULT NULL COMMENT '查询方式',
`formType` tinyint NULL DEFAULT NULL COMMENT '表单类型',
`dictType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '字典类型',
`createTime` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `config_id`(`configId` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '代码生成字段配置表' ROW_FORMAT = Dynamic;
_2. 配置代码生成器
在您的codegen.yml或文件中添加以下配置:
liyao:
codegen:
# 生成模式可选 tree(完整项目结构), simple(按照输入目录的文件结构输出)
mode: simple
# 模板文件路径
template-dir: templates/velocity
# 生成代码到本地的路径
output-dir: templates/generator
# 下载代码文件名称
downloadFileName: youlai-admin-code.zip
# 后端项目名称
backendAppName: java
# 前端项目名称
frontendAppName: vue
# 排除数据表,下面两个必须排除,如果还有其他的不需要生成也可以添加
excludeTables:
- gen_config
- gen_field_config
#默认配置
default-config:
#包名
package-name: com.youlai
# 模块名
module-name: system
# 作者
author: liyao
## 模板配置
templateConfigs:
# ${subpackageName}变量(子包)对应的文件名称,前端vue模板固定为 VIEW,vue生成的文件名为 index.vue,多个vue放不同的文件夹
VIEW:
templatePath: index.vue.vm
subpackageName: views
extension: .vue
# 前端接口
API:
templatePath: api.ts.vm
subpackageName: api
extension: .ts
# 子包文件名称,例如下面为 Controller,实体类 User, extension为空默认为 .java, 生成的文件名为 UserController.java
Controller:
# 模板文件存放路径
templatePath: controller.java.vm
# 子包名,例如上面生成的UserController.java就放在 controller包下
subpackageName: controller
Service:
templatePath: service.java.vm
subpackageName: service
ServiceImpl:
templatePath: serviceImpl.java.vm
subpackageName: service.impl
Mapper:
templatePath: mapper.java.vm
subpackageName: mapper
MapperXml:
templatePath: mapper.xml.vm
subpackageName: mapper
extension: .xml
Converter:
templatePath: converter.java.vm
subpackageName: converter
QueryRequest:
templatePath: model/QueryRequest.java.vm
subpackageName: model.form
Form:
templatePath: model/form.java.vm
subpackageName: model.form
AddRequest:
templatePath: model/AddRequest.java.vm
subpackageName: model.form
UpdateRequest:
templatePath: model/UpdateRequest.java.vm
subpackageName: model.form
EditRequest:
templatePath: model/EditRequest.java.vm
subpackageName: model.form
VO:
templatePath: model/VO.java.vm
subpackageName: model.vo
Entity:
templatePath: model/entity.java.vm
subpackageName: model.entity
在application.yml引入
spring:
config:
import: classpath:codegen.yml
_3. 使用代码生成器
代码生成器会自动注册到您的Spring Boot应用中,您可以通过以下方式使用:
_3.1 注入代码生成服务
@Resource
private CodegenService codegenService;
@Resource
private GenConfigService genConfigService;
@Resource
private CodegenProperties codegenProperties;
_3.2 获取数据库表列表
可通过以下接口获取所有数据库列表
@Operation(summary = "获取数据表分页列表")
@GetMapping("/table/page")
public PageResultUtils<TablePageVO> getTablePage(TablePageQuery queryParams) {
Page<TablePageVO> result = codegenService.getTablePage(queryParams);
return PageResultUtils.success(result);
}
_3.3 获取代码生成配置
获取指定表的配置
加载中...
最后更新于 2025-09-30 20:31