记一次若依二开的简单流程

记一次若依二开的简单流程

前言: 搞Java后端的应该都知道若依框架,是一个十分强大且功能齐全的开源的快速开发平台,且毫无保留给个人及企业免费使用。很多中小型公司会直接在该系统上进行二次开发使用。本文记录一次使用若依二开零编码的简单实现(简单增删修查)

注意,本文不涉及一句代码,只做流程记录,毫无技术含量

1. 下载运行若依

从gitee上下载若依程序,我下载的是前后端分离单体版本,RuoYi v3.8.6,springboot+vue2,链接如下

https://gitee.com/y_project/RuoYi-Vue

首先下载解压,在idea中导入应用。

在这里插入图片描述

然后在找到sql文件夹,找到ry_xxxx.sql脚本,先建一个数据库,然后执行该脚本创建表及导入基本数据。注意数据库编码选择UTF-8,否则可能报错执行失败。
在这里插入图片描述

修改ruoyi-admin模块中的application-druid.yml中数据库连接参数,改为自己的数据库地址及库名,账号及密码,另外application.yml中检查redis配置是否和自己的环境一样,
在这里插入图片描述

然后启动应用
在这里插入图片描述

2. 运行若依前端vue项目

若依前端vue项目跟springboot项目在一个包中,找到ruoyi-ui文件夹,导入到编辑器即可,我用的是idea,引入项目后,ruoyi-ui路径下的Terminal执行 npm install --registry=https://registry.npmmirror.com 下载相关依赖,我已经下载过了,以下截图仅供参考

npm install --registry=https://registry.npmmirror.com
在这里插入图片描述

然后 npm run dev 运行即可,但是高版本node.js可能会报错
在这里插入图片描述

可在package.json文件中,添加 set NODE_OPTIONS=--openssl-legacy-provider 解决
在这里插入图片描述

然后执行 npm run dev,运行vue项目
在这里插入图片描述

3. 删除用不到的模块

用默认的账号密码登录进入系统,可以看到有很多模块,用户管理,角色管理,部门管理等等。根据项目需求可以适当减少相应的模块。例如我不需要定时任务模块,选择将其删除。

像用户管理,角色管理,部门管理等,耦合度比较高,涉及到较大删改,这里不描述,只做最基本实现,所以选择基本0耦合的定时任务模块
在这里插入图片描述

1. 在系统管理中找到角色管理,点击修改普通角色,然后在菜单权限中将定时任务权限去掉
在这里插入图片描述
在这里插入图片描述

2. 在菜单管理中找到定时任务菜单项,将定时任务的子菜单(按钮)一一删除,然后将定时任务菜单删除
在这里插入图片描述

刷新页面,发现定时任务菜单消失。

3. 在vue的src中,找到定时任务相关代码,删除即可,例如

/src/views/monitor/job 下两个文件,index和log
在这里插入图片描述

/src/api/monitor/job.js 定时任务的封装api

/src/api/monitor/jobLog.js 定时任务日志api

在这里插入图片描述

最后将router.js中有关定时任务的配置删除
在这里插入图片描述

4. 将springboot中定时任务模块移除
在这里插入图片描述

在ruoyi-admin模块中的maven依赖(pom.xml)中,将定时任务依赖删除
在这里插入图片描述

在父类工程的maven依赖中将定时任务有关配置删除,两个位置

其一:
在这里插入图片描述

其二:
在这里插入图片描述

5. 最后到数据库中,将有关定时任务的表删除
在这里插入图片描述

至此,定时任务模块被彻底删除。

4. 添加新模块

添加简单的新模块,若依提供了自动代码生成,只需要将其生成的代码文件复制到适合位置即可,例如我创建一个学生管理模块(仅仅为例子,不考究字段是否合理)

1. 创建数据库表

先将需要添加的模块数据库表设计出来,完成数据库表的创建

CREATE TABLE IF NOT EXISTS `sys_student` (`stu_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '学生id',`stu_account` VARCHAR(30) NOT NULL COMMENT '学生账号',`stu_name` VARCHAR(30) NOT NULL COMMENT '学生名字',`stu_class` CHAR(1) DEFAULT '1' COMMENT '学生年级',`email` VARCHAR(50) DEFAULT '' COMMENT '学生邮箱',`phonenumber` VARCHAR(11) DEFAULT '' COMMENT '手机号码',`sex` CHAR(1) DEFAULT '0' COMMENT '学生性别(0男 1女 2未知)',`avatar` VARCHAR(100) DEFAULT '' COMMENT '头像地址',`password` VARCHAR(100) DEFAULT '' COMMENT '密码',`status` CHAR(1) DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',`del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',`login_ip` VARCHAR(128) DEFAULT '' COMMENT '最后登录IP',`login_date` DATETIME DEFAULT NULL COMMENT '最后登录时间',`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`stu_id`)
) ENGINE=INNODB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COMMENT='学生信息表'

2. 使用若依代码生成创建代码文件

在若依管理台,进入系统工具,点击代码生成,点击导入按钮,勾选刚刚创建的sys_student表,点击确定
在这里插入图片描述

点击编辑,修改sys_student的生成配置
在这里插入图片描述

这里补充一下,若依提供了字典管理,可以通过设置字典,提供下拉框标志与值的对应关系。先到系统管理的字典管理中新增字典,例如我想设置年级的字典,1 → 一年级,2→二年级,依次类推。所以在字典管理中新建字典sys_student_class
在这里插入图片描述

然后找到新建的字典,点击字典类型
在这里插入图片描述

进入字典数据页面,点击新增,创建标志与值的对应关系
在这里插入图片描述

完成创建后回到刚刚的代码生成 - 编辑页面

在学生年级这一项上的显示类型选择下拉框,在该项右边的字典类型中选择刚刚创建的学生年级类型(如果没看到新建的项,先刷新一下页面),其他项根据需求自己设计,点击提交
在这里插入图片描述

然后点击生成代码,浏览器会将代码下载到本地
在这里插入图片描述

3. 将生成代码粘贴到若依代码中

将上面下载的压缩包解压打开,会看到两个文件夹,分别为java代码以及vue代码

建议将java代码按照若依现有规范中,拷贝到对应文件夹,例如

将SysStudentController.java文件拷贝到 /ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ 中

将SysStudent.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/domain/

将SysStudentMapper.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/mapper/

将ISysStudentService.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/service/

将SysStudentServiceImpl.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/service/impl/中

另外

将resource下的SysStudentMapper.xml文件拷贝到 /ruoyi-system/src/main/resources/mapper/system/中

重启服务,没有报错

然后将vue中的文件也拷贝到vue文件夹中,例如

将student.js拷贝到 /src/api/system 中

将/vue/views/system/student/index.vue 拷贝到 /src/views/system/student/ 中

4. 在若依系统中添加新菜单

点击系统管理,菜单管理,点击新增,上级菜单选择系统管理,菜单类型选择菜单,如下
在这里插入图片描述

组件路径要跟student/index.vue路径保持一致,权限字符要跟controller/StudentController.java中接口上标注权限保持一致,然后点击确定。

在菜单管理中找到新建的学生管理项,在右侧点击新增
在这里插入图片描述

根据controller中的权限,仿照其他管理菜单的子项,创建按钮级菜单,例如
在这里插入图片描述

接着刷新页面,会看到系统管理中有新建的学生管理菜单

5. 测试

测试学生管理,在新建的学生管理模块中,点击新建,按要求输入对应项,确定,新建成功
在这里插入图片描述

修改,删除,搜索,导出功能均正常无误

测试权限分配,另起一个浏览器,使用若依提供的 ry 测试账号登录若依管理平台,刷新页面发现没有学生管理菜单模块,这是由于新建的学生管理菜单权限没有分配给ry用户

用admin用户点击角色管理,点击修改普通角色,在菜单权限配置中,勾选刚刚创建的学生管理菜单,完成菜单分配。
在这里插入图片描述

接着回到ry登录的页面,刷新页面,出现学生管理页面
在这里插入图片描述

测试新增,修改,删除,导出搜索均无误。

至此,添加新模块流程完毕

总结

我也是第一次接触若依,就以上描述的体验下来,真的感叹该框架的强大,能无代码实现普通模块的增删修查,能大大节省开发时间,降低开发成本。

但是,虽然看似降低了程序员使用门槛,事实上应用在正式项目上时,修改的地方还是很多的,如果对框架底层结构不理解的话,使用上来说依旧很吃力。框架只是个辅助工具,应用上还是得靠开发者扎实的基本知识和求真创新的自我价值实现精神。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript变量的小驼峰命名法

什么是小驼峰命名法 JavaScript中变量的小驼峰命名法,一般指的是JavaScript的变量的名称或函数的名称采用大小写字母搭配的方式进行命名,比如:folowerName、studentAge,其中N和A是大写的。 小驼峰命名变量的用处是什么 浏览器执…

Python安装步骤介绍

本文将介绍Python安装的详细步骤如下: 下载 python安装 python配置环境变量(安装时勾选配置环境变量的则无需此步骤) 一、python下载 官网:Download Python | Python.org 根据电脑位数下载所需的版本 二、Python安装 1.打开安…

C++实现ATM取款机

C实现ATM取款机 代码:https://mbd.pub/o/bread/ZZeZk5Zp 1.任务描述 要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456) 时,系统 能登录 ATM 取款机系统,用户可以按照以下规则进行: 查询…

硬币堆算法分析

题目描述&#xff1a; Description 桌上有 n 堆硬币&#xff0c;每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆&#xff0c;拿走其中的一枚或者两枚&#xff0c;求拿完所有硬币的最少次数。 Input 第一行输入硬币数组长度 第二行输入硬币个数 0< coins长度…

dynamic-datasource多数据源事务

Spring 事务管理分为编程式和声明式两种 编程式事务指的是通过编码方式实现事务&#xff1b;声明式事务基于 AOP&#xff0c;将具体的逻辑与事务处理解耦(编程式事务在这边不做过多陈述)。 声明式事务有两种方式&#xff0c;一种是在配置文件&#xff08;XML&#xff09;中做相…

JavaWeb 添加页面和用户图像展示

add.jsp&#xff08;需要登录之后才可以访问 &#xff09; -> 不是和login.jsp同级了那就 在images目录下加上默认图像 js目录下加入common.js javaWeb项目中&#xff0c;页面的路径 img的src form的action link的href script的src a的href推荐使用绝对路径 这个绝对路径…

网络和Linux网络_7(传输层)UDP和TCP协议(端口号+确认应答+超时重传+三次握手四次挥手)

目录 1. 重看端口号 1.1 端口号的概念 1.2 端口号的划分 2. 重看UDP协议 2.1 UDP协议格式 2.2 UDP的特点 3. 重看TCP协议 3.1 TCP协议格式 3.2 TCP的解包分用 3.3 TCP的可靠性及机制 3.3.1 确认应答ACK机制 3.3.2 超时重传机制 3.3.3 连接管理机制&#xff08;三次…

kgma转换flac格式、酷狗下载转换车载模式能听。

帮朋友下载几首歌到U盘里、发现kgma格式不能识别出来&#xff0c;这是酷狗加密过的格式&#xff0c;汽车不识别&#xff0c;需要转换成mp3或者flac格式&#xff0c;网上的一些辣鸡软件各种收费、限制、广告&#xff0c;后来发现一个宝藏网站&#xff0c;可以在线免费转换成flac…

二分答案 2023山东省赛 Fast and Fat

[P9559 SDCPC2023] Fast and Fat - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a;最小值最大&#xff0c;二分答案。 发现对于 w i ≥ w j w_i \ge w_j wi​≥wj​时&#xff0c;第 i i i个人速度不变&#xff0c;还是 v i v_i vi​&#xff0c;但是第 j j j…

【专题】【数列极限】

【整体思路】 【常用不等式】

【Python-随笔】使用Python实现屏幕截图

使用Python实现屏幕截图 环境配置 下载pyautogui包 pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/下载OpenCV包 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/下载PyQT5包 pip install PyQt5 -i https://pypi.tuna.tsi…

目标检测算法改进系列之添加SCConv空间和通道重构卷积

SCConv-空间和通道重构卷积 SCConv&#xff08;空间和通道重构卷积&#xff09;的高效卷积模块&#xff0c;以减少卷积神经网络&#xff08;CNN&#xff09;中的空间和通道冗余。SCConv旨在通过优化特征提取过程&#xff0c;减少计算资源消耗并提高网络性能。该模块包括两个单…

【LangChain实战】开源模型学习(1)-ChatGLM2-6B

介绍 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上&#xff0c;ChatGLM2-6B 引入了如下新特性&#xff1a; 更强大的性能&#xff1a;基于 ChatGLM 初代模型的开发经验&#xff0c…

《python每天一小段》--(1)与GPT-3.5-turbo 模型进行对话

对话如图&#xff1a; 配置环境变量 APIKey如何获得这边不做说明 在Windows操作系统中&#xff0c;你可以按照以下步骤设置环境变量&#xff1a; 打开“控制面板”。在控制面板中&#xff0c;选择“系统和安全”。选择“系统”。在系统窗口中&#xff0c;选择“高级系统设置”…

了解ThreadLocal的原理吗

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

麒麟系统自定义服务-开机自启-配置方案

方法一 &#xff1a;使用systemd的service文件自定义开机启动服务 一、kylin 添加自定义脚本服务说明 在kylin 下&#xff0c;使用管理unit的方式来控制开机自启动服务和添加自定义脚本服务。在/usr/lib/systemd/system目录下包含了各种unit文件&#xff0c;有service后缀的服…

【云原生Prometheus篇】Prometheus PromQL语句详解 1.0

文章目录 一、前言1.1 Prometheus的时间序列1.1.1 指标名称1.1.2 标签1.1.3 使用的注意事项 1.2 样本数据格式1.3 Prometheus 的聚合函数 二 、PromQL 理论部分2.1 PromQL简介2.2 PromQL的数据类型2.3 时间序列选择器2.3.1 瞬时向量选择器 &#xff08;Instant Vector Selector…

vue 前端实现login页登陆 验证码

实现效果 // template <el-form :model"loginForm" :rules"fieldRules" ref"loginForm" label-position"left" label-width"0px" class"login-container"><span class"tool-bar"></sp…

不平衡数据处理

机器学习中一个常见的问题是数据不平衡&#xff0c;其中一个类的数量明显超过其他类&#xff0c;这可能导致有偏见的模型和较差的泛化。实践中可以通过各种Python库来帮助有效地处理不平衡数据。 1、imbalanced-learn imbalanced-learn是scikit-learn的扩展&#xff0c;提供了…

【动态规划】LeetCode-面试题 17.16. 按摩师

&#x1f388;算法那些事专栏说明&#xff1a;这是一个记录刷题日常的专栏&#xff0c;每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目&#xff0c;在这立下Flag&#x1f6a9; &#x1f3e0;个人主页&#xff1a;Jammingpro &#x1f4d5;专栏链接&…