首页 > 其他分享 >若依前端后端分离 代码生成修改(1)

若依前端后端分离 代码生成修改(1)

时间:2023-04-18 13:00:10浏览次数:44  
标签:代码生成 genTable java generator 配置文件 前端 DB ruoyi 若依

模板引擎修改

2023年3月7日

9:26

主要配置参数的引用和定义

  1. 表字段
.vm模板: 参数名 使用位置(.vm模板文件中) 前端表单表头 默认值来源 db表: gen_table
packageName package ${packageName}.controller; 生成包路径 配置文件

Packag

e_name

ClassName和className I${ClassName}Service ${className}Service; - DB 表名 配合配置文件使用 class_name(类名非引用名)
functionName

/**

* 获取${functionName}详细信息

*/

生成功能名 DB表的注释 function_name
moduleName 模块名 @RequestMapping("/${moduleName}/${businessName}") 生成模块名 配置文件 包名最后一级 module_name
businessName 业务名 生成业务名 配置文件 DB名最后一级 business_name
  1. 列字段
参数 前端表单表头 db表: gen_table_column
 
字段列名
字段描述
物理类型
Java类型
java属性
插入
编辑
列表
查询
查询方式
必填
显示类型
字典类型
column_name
column_comment
column_type
java_type
java_field
is_required
is_insert
is_edit
is_list
is_query
query_type
html_type
dict_type

解释:

a. DB表名 "_" 分割 命名 (windows MySQL 表名全部小写, 若要区分大小写,请修改数据库配置文件)

b. 配置文件所在位置: ruoyi-generator/src/main/resources/generator.yml

c. 默认表字段参数设置核心代码位置: ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java#initTable(...)

d. 默认列字段参数设置核心代码位置: ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java#initColumnField(...)

e. 使用位置只是举例具体全部 查看模板文件

<!-- -->

f. 个人使用的事若依前后端分离版本 3.2.0

模板引擎工作流程

引用来源 :https://oomspot.com/post/ruoyiguanlixitongruoyivuesandaimashengchengqiyuanl

  1. 首先看com.ruoyi.generator.controller.GenControllerimportTableSave 接口,它做了以下这些事情

    a. 从information_schema数据库的tables表中查询目标表的表明、标注释、创建时间和更新时间,但是忽略掉定时任务的表和已经生成过的表。

    b. 初始化表数据并将数据插入ruoyi数据库的gen_table表

    c. 从information_schema数据库的columns表中查询目标表的列信息,包含字段名、字段注释、字段类型、是否允许为null等详细信息

    d. 初始化列信息并将数据插入ruoyi数据库的gen_table_column表

<!-- -->
  1. 接下来看下 com.ruoyi.generator.controller.GenControllerbatchGenCode 接口,它做了以下这些事情

    a. 从ruoyi数据库的gen_table、gen_table_column表查询出生成代码需要的表和列信息。

    b. 初始化Velocity

    c. 准备Velocity上下文信息(变量值信息)

    d. 读取模板、渲染模板,然后将渲染后的模板内容添加进如压缩流,之后前端就可以下载zip压缩文件了。

  1. 导入按钮 业务流程

    a. 前端 导入按钮 发送请求 http://localhost/dev-api/tool/gen/db/list?pageNum=1&pageSize=10&tableName=liner

    b. controller流程

    1.  获取前端 要导入的 tables (数组) 获得 DB 表名数组
    
    2.  查询DB 获得 List\<GenTable\> 列表 (此时只封装了 DB中有的基本 数据)
    
    3.  importGenTable( List\<GenTable\> ) ①设置默认的表字段信息 ② 设置默认的列字段信息
    

  1. 设置默认的表字段信息

initTable(GenTable genTable, String operName)

// 判读配置文件是否设置除去前缀 ,去除前缀后 变为类名 全部小写后 首字母大写拼接

genTable.setClassName(convertClassName(genTable.getTableName()));

//从配置文件中获取 包名的配置

genTable.setPackageName(GenConfig.getPackageName());

// 包名的最后一级

genTable.setModuleName(getModuleName(GenConfig.getPackageName()));

//{_}分割命名 DB表名的最后一级

genTable.setBusinessName(getBusinessName(genTable.getTableName()));

//功能名 就是DB表的注释 如果表中的注释有 表或若依 替换为""

genTable.setFunctionName(replaceText(genTable.getTableComment()));

//从配置文件中获取 作者信息

genTable.setFunctionAuthor(GenConfig.getAuthor());

// SecurityUtils.getUsername(); 登录用户名

genTable.setCreateBy(operName);

  1. 设置默认的列字段信息

initColumnField(GenTableColumn column, GenTable table) 方法主要做的事

根据 DB字段名 (例first_name), 字段类型(例int(11)), 注释(曾用名), 约束(not null,主键...) 推断出

Java类型 , java属性, 插入, 编辑, 列表, 查询, 查询方式, 必填, 显示类型, 字典类型 这些字段的值

  1. 代码生成业务流程

    a. 预览

    b. 下载 只修改下载路径和导入路径

    c. 保存到相关目录

标签:代码生成,genTable,java,generator,配置文件,前端,DB,ruoyi,若依
From: https://www.cnblogs.com/acman-mr-lee/p/17329186.html

相关文章

  • 若依前后端分离 代码生成修改(2)
    修改若依代码生成模块目标:多级目录情况下实现模块名/mvc名[controller/…]/功能名/XXXController原格式:多级目录:模块名/功能名/mvc名[controller/…]/xxxController修改共分为两部分:文件路径和模板代码中的引用路径若依代码生成配置1.修改生成文件路径Com......
  • 字节前端第一讲
    第一点是关于信息是如何传到其他的地方:视频中是用蟹煲皇帝国来进行说明:一旦多个地方都需要信息的共享,所以就需要转发表格来进行一个消息的交换,而这就是通信线路。我们试想如果有太多了用户。如果还是单一的简单的交互,没有其他的操作,那么会使得时间很慢,因为要传送信息的地方间距......
  • web前端tips:ES6部分常用新特性介绍
    ES6(ECMAScript6,也称为ES2015)是JavaScript的一个重要更新版本,于2015年发布。它引入了许多新的语言特性和改进,使得JavaScript变得更加现代化、易读、易维护和更适合大型应用程序的开发。ES6主要的新特性包括:1.块级作用域:ES6引入了let和const关键字,可以用来声明块级作用域的变量和......
  • 第三章、web前端架构师
    目录四、脚手架命令注册和执行过程开发1、四、脚手架命令注册和执行过程开发1、......
  • FinClip 与 uniapp:轻应用平台与前端开发框架
    原文地址juejin.cnFinClip背后的产品经理发现很多开发者或业务部门的朋友,在刚了解到FinClip的时候,都会好奇FinClip能解决怎样的问题,也会经常将FinClip与uni-app进行对比考虑二者的区别与优劣势。因此在本文中,FinClip的产品经理会和我们深入地探讨FinClip与uni-app之......
  • 前端(五)
    前端(五)js函数<script>functionindex(){/*定义函数*/console.log('你好');}index();/*调用函数*/</script>functionsum(a,b){/*带参函数,js只有位置参数,没有关键字参数*/console.log(arguments);/*arguments是数组类型,所有......
  • 关于 Fiori 应用里 SAP UI5 前端开发和 SEGW 后台 OData 服务开发的工作量比值问题
    我的知识星球有朋友向我提问:Jerry您好!请问一个中等复杂度的FioriUI5应用,前端代码用freestyle方式纯自己写,后端用SEGW开发Odata服务,前后端的工作量的比值大概是多少?需考虑调试测试的时间。关于这个问题,首先我们得界定,什么算是一个中等复杂度的Fiori应用?从前台视角来看,......
  • 盘点国内前端npm CDN替代方案,基本上可以替代unpkg、jsdelivr
    收集一波常见的加速NPM包的CDN,发现有些还是挺好用的,用来做博客或者网站加载NPM使用还是可以的。经典老牌的CDN加速unpkg.comcdn.jsdelivr.netfastly.jsdelivr.net使用方法:直接进官网,搜NPM包名使用。缺点:有时候不是很稳定,而且国内有些地方没法访问,jsdelivr曾经被用来结合......
  • 前端学习笔记——Vue3组件间数值传递
    依据个人的学习需求,对Vue官网中组件部分内容的搬运和总结,可用于参看,想详细了解Vue3这部分特性的可以直接参考官网内容:https://cn.vuejs.orgprops是一种特别的attributes,我们可以在组件上生命注册。比如:如果我们要传递给博客文章组建一个标题的话,我们则必须在该组件的props列表......
  • 什么是前端开发领域的 Cumulative Layout Shift 问题
    CLS是CumulativeLayoutShift(累计布局偏移)的缩写,它是一个用于度量网页稳定性的指标。CLSissue指的是网页在加载过程中存在的累计布局偏移问题,这些问题会导致网页元素在页面上闪烁或跳动,影响用户体验。在前端开发中,CLSissue是一个常见的问题,通常由于页面中的图片、视频或广......