启动若依

若依的定义

若依(RuoYi)是一款基于Spring Boot和MyBatis的Java快速开发框架,主要用于企业级应用系统的开发。它提供了一套完整的后台管理系统解决方案,包括用户权限管理、菜单配置、数据监控等功能,同时支持代码生成器,显著提升开发效率。

若依的核心特点

  • 模块化设计:前后端分离架构,前端可选Vue2/Vue3版本,后端基于Spring Boot。
  • 代码生成器:通过可视化配置自动生成CRUD代码,减少重复劳动。
  • 权限控制:基于RBAC(角色基于访问控制)模型,精细化管理菜单、按钮权限。
  • 多数据源支持:轻松配置动态数据源,适应复杂业务场景。
  • 若依的技术栈

  • 后端:Spring Boot、MyBatis、Shiro(安全框架)、Redis(缓存)。
  • 前端:Vue.js、Element UI(Vue2版本)或Ant Design Vue(Vue3版本)。
  • 数据库:支持MySQL、Oracle、SQL Server等主流数据库

环境要求

jdk>1.8 mysql Redis Maven Vue

接下来需要配置环境,官方文档中有环境介绍。

如图

接下来去启动后端项目,启动前需要配置mysql数据库与Redis。

Redis是啥:官方文档教程:

Redis 配置_redis教程

Redis简介

Redis(Remote Dictionary Server)是一个开源的高性能键值存储系统,支持多种数据结构(如字符串、哈希、列表、集合等)。它以内存存储为主,兼具持久化功能,常用于缓存、消息队列、实时数据分析等场景。

核心特点

内存存储:数据主要存储在内存中,读写速度极快(可达10万次/秒以上)。
持久化支持:提供RDB(快照)和AOF(日志)两种方式将数据保存到磁盘。
数据结构丰富:支持字符串、哈希、列表、集合、有序集合等,适应不同业务需求。
高可用性:通过哨兵(Sentinel)和集群(Cluster)模式实现故障自动转移与横向扩展。

典型应用场景

  • 缓存加速:减轻数据库压力,提升网站响应速度。
  • 会话存储:分布式系统中共享用户会话信息。
  • 实时排行榜:利用有序集合实现分数排序。
  • 消息队列:通过列表或Stream结构实现异步任务处理。

基本命令示例

# 连接Redis
import redis
r = redis.Redis(host='localhost', port=6379)

# 设置键值
r.set('key', 'value')

# 获取值
print(r.get('key'))MMy

MySql配置 

与其他数据库对比

  • Redis vs MySQL:Redis基于内存,适合高速读写;MySQL基于磁盘,适合复杂查询与事务。
  • Redis vs Memcached:Redis支持数据持久化和更多数据结构,Memcached仅支持简单键值且无持久化。

Redis的灵活性和高性能使其成为现代分布式系统中的重要组件。

安装Rsdis:参考文档Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)_redis安装-CSDN博客

Redis配置

可以直接在任务管理器中查看是否启用。

导入数据库表

导入后即可运行后端程序,运行结果如下图所示:

前端运行

 使用VsCode打开前端UI文件

打开完成后在终端输入npm install 下载依赖

npm run dev 启动。

 运行成功结果。

nginx介绍

Nginx的定义

Nginx(发音为“engine-x”)是一款高性能的开源Web服务器、反向代理服务器、负载均衡器及HTTP缓存工具。最初由俄罗斯开发者Igor Sysoev设计,于2004年首次公开发布,现已成为全球最流行的Web服务器之一。

Nginx的核心功能

Web服务器
Nginx可以高效地处理静态内容(如HTML、CSS、图片),支持高并发连接,资源占用低,适合高流量场景。

反向代理
作为反向代理服务器,Nginx可将客户端请求转发至后端多台服务器,隐藏真实服务器信息,提升安全性和可扩展性。

负载均衡
支持多种负载均衡算法(如轮询、加权轮询、IP哈希),将流量分配到多台后端服务器,提高系统可用性和性能。

HTTP缓存
通过缓存静态或动态内容,减少后端服务器压力,加速响应速度。

Nginx的特点

  • 事件驱动架构:基于异步非阻塞模型,支持高并发连接(单机可处理数万并发请求)。

  • 模块化设计:通过模块扩展功能(如支持SSL、gzip压缩、HTTP/2)。

  • 低资源消耗:内存和CPU占用率远低于传统服务器(如Apache)。

  • 跨平台:支持Linux、Windows、macOS等操作系统。

登录验证码流程

首先通过后端生成一个表达式,上传到前端,并且将验证码答案存放在Redis中,用户通过前端登录时将key值和输入的答案一起传入数据库。

登录操作将内容保存在表中

用户表 

进行增删该查操作

代码生成

单应用在resources目录下的application.yml,多模块ruoyi-generator中的resources目录下的generator.yml,可以自己根据实际情况调整默认配置。

# 代码生成
gen: 
  # 开发者姓名,生成到类注释上
  author: ruoyi
  # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
  packageName: com.ruoyi.system
  # 自动去除表前缀,默认是false
  autoRemovePre: false
  # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
  tablePrefix: sys_

新建数据库表结构(单表)

drop table if exists sys_student;
create table sys_student (
  student_id           int(11)         auto_increment    comment '编号',
  student_name         varchar(30)     default ''        comment '学生名称',
  student_age          int(3)          default null      comment '年龄',
  student_hobby        varchar(30)     default ''        comment '爱好(0代码 1音乐 2电影)',
  student_sex          char(1)         default '0'       comment '性别(0男 1女 2未知)',
  student_status       char(1)         default '0'       comment '状态(0正常 1停用)',
  student_birthday     datetime                          comment '生日',
  primary key (student_id)
) engine=innodb auto_increment=1 comment = '学生信息表';

新建数据库表结构(树表)

drop table if exists sys_product;
create table sys_product (
  product_id        bigint(20)      not null auto_increment    comment '产品id',
  parent_id         bigint(20)      default 0                  comment '父产品id',
  product_name      varchar(30)     default ''                 comment '产品名称',
  order_num         int(4)          default 0                  comment '显示顺序',
  status            char(1)         default '0'                comment '产品状态(0正常 1停用)',
  primary key (product_id)
) engine=innodb auto_increment=1 comment = '产品表';

新建数据库表结构(主子表)

-- ----------------------------
-- 客户表
-- ----------------------------
drop table if exists sys_customer;
create table sys_customer (
  customer_id           bigint(20)      not null auto_increment    comment '客户id',
  customer_name         varchar(30)     default ''                 comment '客户姓名',
  phonenumber           varchar(11)     default ''                 comment '手机号码',
  sex                   varchar(20)     default null               comment '客户性别',
  birthday              datetime                                   comment '客户生日',
  remark                varchar(500)    default null               comment '客户描述',
  primary key (customer_id)
) engine=innodb auto_increment=1 comment = '客户表';


-- ----------------------------
-- 商品表
-- ----------------------------
drop table if exists sys_goods;
create table sys_goods (
  goods_id           bigint(20)      not null auto_increment    comment '商品id',
  customer_id        bigint(20)      not null                   comment '客户id',
  name               varchar(30)     default ''                 comment '商品名称',
  weight             int(5)          default null               comment '商品重量',
  price              decimal(6,2)    default null               comment '商品价格',
  date               datetime                                   comment '商品时间',
  type               char(1)         default null               comment '商品种类',
  primary key (goods_id)
) engine=innodb auto_increment=1 comment = '商品表';

代码生成使用

1、登录系统(系统工具 -> 代码生成 -> 导入对应表)

2、代码生成列表中找到需要表(可预览、编辑、同步、删除生成配置)

3、点击生成代码会得到一个ruoyi.zip执行sql文件,按照包内目录结构复制到自己的项目中即可

代码生成支持编辑、预览、同步

预览:对生成的代码提前预览,防止出现一些不符合预期的情况。

同步:对原表的字段进行同步,包括新增、删除、修改的字段处理。

修改:对生成的代码基本信息、字段信息、生成信息做一系列的调整。

另外多模块所有代码生成的相关业务逻辑代码在ruoyi-generator模块,不需要可以自行删除模块。

部门树状图渲染思路

通过前端抓包,使用的是getDepeTree此方法。 

找到封装源。

通过断点放行可以得到

return success(deptService.selectDeptTreeList(dept));

返回的数据。在数据库中进行查询得到。

得到数据与页面数据一样。 

递归渲染界面。 

部署

后端部署

打包工程文件

在工程文件下打开执行bin/package.bat文件进行打包,生成war/jar文件

前端部署

当项目开发完毕,只需要运行一行命令就可以打包你的应用

# 打包正式环境
npm run build:prod

# 打包预发布环境
npm run build:stage

构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.cssindex.html 等静态文件。

通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。

LikeAdmin开源后台

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐