本文共 4043 字,大约阅读时间需要 13 分钟。
ruoyi-vue代码生成器是一款强大的工具,能够根据数据库表结构自动生成前后端代码。本文将从使用、配置、原理分析以及高级使用等多个方面详细介绍这一工具。
在ruoyi-vue系统中,代码生成器主要用于快速开发,通过简单的配置即可生成完整的业务代码。以下是使用流程:
原则上,我们的业务代码和若依系统本身的系统代码需要做隔离,这样方便后续升级,同时也更具合理性。在ruoyi-admin中新建一个ruoyi-business模块,并添加ruoyi-framework依赖。POM文件如下:
ruoyi com.ruoyi 3.4.0 4.0.0 com.kdyzm ruoyi-business 1.0.0-SNAPSHOT com.ruoyi ruoyi-framework
之后,在ruoyi-admin中添加ruoyi-business模块的依赖。
ruoyi-vue系统中的代码生成器配置文件在resources/generator.yml中。由于我们在ruoyi-business模块中开发,需要自定义包名为com.kdyzm.business。配置文件内容如下:
# 代码生成gen: author: kdyzm packageName: com.kdyzm.business autoRemovePre: false tablePrefix: sys_
此外,还需要对mybatis进行配置:
修改mybatis的别名配置,增加对com.kdyzm包名的识别:
com.ruoyi.**.domain,com.kdyzm.**.domain
修改mybatis的mapper扫描包路径:
@MapperScan({"com.ruoyi.**.mapper", "com.kdyzm.**.mapper"}) 最后,在ruoyi-admin中新增一个Config类,扫描com.kdyzm包:
package com.ruoyi.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScan(basePackages = "com.kdyzm")public class Config {} 新建一个商品表作为示例(表注释需添加):
CREATE TABLE `goods` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `GOODS_NAME` varchar(255) DEFAULT NULL COMMENT '商品名字', `put_way_flag` tinyint(1) DEFAULT NULL COMMENT '商品是否上架,0:下架,1:上架', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
将生成代码中的main目录直接拷贝到ruoyi-business模块下的src目录。生成的代码采用三层架构,controller、mapper、service都已生成。
将生成目录中的vue目录中的内容拷贝到ruoyi-ui项目中:
vue/api目录拷贝到ruoyi-ui/src/apivue/views目录拷贝到ruoyi-ui/src/views生成的SQL文件包含菜单和按钮权限SQL。将goodsMenu.sql文件中的内容直接执行到ruoyi数据库中。
重新运行前后端代码后,打开系统工具菜单中的商品菜单。前端菜单和权限等功能均已生成,可以直接使用。
在测试过程中发现,商品是否上架字段前端显示为文本输入框,但实际应为下拉列表或单选按钮。代码生成器支持自定义字段显示类型和字典类型。
点击编辑按钮,跳转至修改生成配置页面。在页面中:
提交后,生成的代码样式会更新为下拉列表和单选框。
ruoyi代码生成器支持三种数据格式模板:单表、树表、主子表。默认使用单表模板。
ruoyi-vue代码生成器基于Velocity技术实现源代码生成。生成逻辑分为三步:
以下是index.vue模板文件的一部分代码:
#foreach($column in $columns)#if($column.query)#set($dictType=$column.dictType)#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})#set($parentheseIndex=$column.columnComment.indexOf("("))#if($parentheseIndex != -1)#set($comment=$column.columnComment.substring(0, $parentheseIndex))#else#set($comment=$column.columnComment)#end#if($column.htmlType == "input") 代码生成器以mysql的information_schema数据库中的TABLES和COLUMNS表信息为核心实现。
ruoyi-vue代码生成器相关代码位于ruoyi-generator模块中。主要接口包括:
com.ruoyi.generator.controller.GenController#importTableSavecom.ruoyi.generator.controller.GenController#batchGenCode作为普通研发人员,常常需要完成CRUD操作。如果有一款代码生成器能够根据表结构自动生成后端代码,岂不是能大大节省时间?ruoyi系统提供了这样的工具,但其依赖于特定的前端页面权限。
将ruoyi-generator模块的功能独立于spring-boot框架,作为一个普通的spring程序运行。具体实现包括:
main方法调用相关模块application.properties文件配置文件内容如下:
mysql.username=${dbUserName}mysql.password=${dbPassword}mysql.connectionUrl=${dbUrl}mysql.driverClass=${dbDriverClassName}gen.author=kdyzmgen.packageName=com.kdyzm.businessgen.autoRemovePre=falsegen.tableName=newsgen.tablePrefix=sys_ 在项目根目录运行命令:
mvn clean package
打包完成后,切换到target目录并运行:
java -jar ruoyi-vue-gen-1.0-SNAPSHOT.jar
生成的代码将以ruoyi.zip压缩文件形式下载。
独立版代码生成器源代码已完成,感兴趣的可以访问我的博客查看完整代码。
转载地址:http://phdyz.baihongyu.com/