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

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

前言: 搞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登录的页面,刷新页面,出现学生管理页面
在这里插入图片描述

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

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

总结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler抓包工具之fiddler设置断点和简单的并发测试

断点有两种方式: 1、全局断点 2、局部断点 全局断点 全局断点的特点是:不能针对一个请求,是给所有抓到的请求打断点 全局断点如何设置: 1、快速设置断点:直接点击底部状态栏断点处 ;点击第一下是请求…

vcruntime140.dll无法继续执行代码五种解决方法修复教程

在电脑使用过程中,我们可能会遇到一些常见的错误提示,其中之一就是“vcruntime140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。本文将介绍vcruntime140.dll丢失对电脑的影响以及如何修复这个问题,并提供一些预防措施&#xff0…

Ubuntu系统CLion安装与Ubuntu下菜单启动图标设置

Ubuntu系统CLion安装 pycharm 同理。 参考官网安装过程:官网安装过程 下载linux tar.gz包 # 解压 sudo tar -xzvf CLion-*.tar.gz -C /opt/ sh /opt/clion-*/bin/clion.sh其中第二个命令是启动CLion命令 clion安装完以后,不会在桌面或者菜单栏建立图…

半监督语义分割综述

paper link:https://arxiv.org/pdf/2302.09899.pdf 1. Introduction 图像分割是最古老、研究最广泛的计算机视觉 (CV) 问题之一。图像分割是指将图像划分为不同的非重叠区域,并将相应的标签分配给图像中的每个像素,最终获得ROI区域位置及其类…

Linux - 动态库的加载 和 重谈进程地址空间 - vscode 当中的 Remote - SSH 插件

推书:《现代操作系统》《操作系统--精髓于设计原理》《UNIX环境高级编程》 目录 前言 程序的加载 程序没有加载之前的地址(此时还是程序) 程序被加载到内存之后(此时是进程) 动态库的地址 静态库的不加载&#xff…

海外之路,英语相助:我的雅思考试之旅(成功以此申请到了港科大硕士)

文章目录 背景注册过程 雅思考试之旅全程记录2023年2月14日 - 报名补充2023年2月15日 - 模拟考试2023年2月16日 - 在线考试失利2023年2月20日 - 线下考试再战成功2023年2月23日 - 成绩出来了 考试经验寄送成绩问题请求额外的IELTS成绩寄送 结语 背景 在新加坡Shopee工作了两年…

Linux 内核源码各版本下载

下载地址: kernel/git/stable/linux.git - Linux kernel stable treehttps://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/ 1. Linux 内核的基本概念: 内核是什么? 内核是操作系统的核心部分,负责管理系统…

Active Stereo Without Pattern Projector论文精读

1.背景补充 主动立体相机和被动立体相机的主要区别在于它们获取立体视觉信息的方式 主动立体相机12: 主动立体视觉是指寻找最佳的视角去重建目标或者场景1。主动视觉的实现方式通常有:改变环境中的光照条件、改变相机的视角、移动相机自身位置等&…

P1 嵌入式开发之什么是Linux应用开发

目录 前言 01 .Linux应用与裸机编程、驱动编程之间的区别 1.1裸机编程: 1.2 驱动编程 1.3应用编程 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程&a…

蓝桥杯物联网竞赛_STM32L071_7_LORA发送接收

理论: LoRa(长距离低功耗无线射频)是利用无线电频谱中的电磁波进行通信的一种技术。它使用无线电频段中的射频信号来传输数据。电磁波是一种波动形式的能量,具有特定的频率和波长,可以传播在真空和大多数介质中&#x…

腾讯云云服务器功能与优势

腾讯云云服务器(Cloud Virtual Machine,CVM)是腾讯云提供的可扩展的计算服务。使用云服务器 CVM 避免了使用传统服务器时需要预估资源用量及前期投入的问题,帮助您在短时间内快速启动任意数量的云服务器并及时部署应用程序。 云服…

代码生成器——MyBatisX插件

MyBatisX插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。 但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要自己去编写代码和SQ…

Linux常见指令大全及周边知识:让你的命令行变得更加强大

文章目录 目录 文章目录 前言 一,Linux操作系统是啥? 二,Linux操作系统具有以下特点 三,指令的学习 1,指令是什么? 2,ls 指令及其常用的衍生指令: 周边知识: ls…

uniapp 微信小程序连接蓝牙卡死

解决方法,需要同意隐私保护协议,否则不能开启蓝牙权限和定位权限,会导致定位失败

C#-串口通信入门及进阶扩展

目录 一、串口相关参数介绍 1、端口(COM口) 2、波特率(Baud rate) 3、起始位 4、停止位(StopBits) 5、数据位 6、校验位 7、缓存区 二、串口通信助手 三、虚拟串口工具 四、进阶扩展 1、位运算…

五子棋AI算法自动测试方法

先前发了几篇五子棋游戏程序设计的博文,设计了游戏程序,也设计了AI智能奕棋的算法,运行程序检测算法的可行性,完成人机模式游戏功能的设置。 本文主要介绍自动测试算法的方法。 AI智能奕棋的算法testAIq( ),主要是检测…

利用段落检索和生成模型进行开放域问答12.2

利用段落检索和生成模型进行开放域问答 摘要引言2 相关工作3 方法 摘要 事实证明,开放域问答的生成模型具有竞争力,无需借助外部知识。虽然很有希望,但这种方法需要使用具有数十亿个参数的模型,而这些模型的训练和查询成本很高。…

opencv知识库:利用cv2.resize()函数进行图像缩放

引言 在numpy知识库:深入理解numpy.resize函数和数组的resize方法中,小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看,numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名&…

结构体||联合体

1.结构体 1.1实际生活中一些东西往往有多个元素组成。如一名学生有身高、体重、名字、学号等。这时候就需要用到结构体。 结构体是一些值的结合,这些值被称为成员变量。结构体的每个成员可以是不同类型的变量,如:标量、数组、指针、甚至是其…

Mysql行格式(记录格式)详解

1.InnoDB行格式简介: 我们平时向表中插入数据,是以行为基本单位,这些行在磁盘上的存储方式成为行格式。在innodb中有四种行格式:Compact、Redundant、Dynamic和Compressed。 默认的行格式是Dynamic: 1.1 Compact行格式 1.1.1 …