若依框架的入门介绍及使用

article/2025/6/27 5:48:29

若依框架的入门介绍及使用

文章目录

  • 引言
    • 1.什么是若依
    • 2 .使用若依
      • 2.1系统需求
      • 2.1下载并运行
      • 2.2配置数据库 MySQL、Reids
        • 2.2.1MySQL配置
        • 2.2.2Redis配置
      • 2.3前端启动
    • 3. 框架结构和模块
      • 3.1后端结构
      • 3.2前端结构
      • 3.3内置功能
      • 3.4其他功能和扩展
        • 3.4.1代码生成器
      • 总结

引言

若依(RuoYi)开源框架是一个功能强大的Java开发框架,专注于快速构建企业级后台管理系统。它提供了一套丰富的功能和模块,可以帮助开发人员快速搭建稳定、高效的管理系统。本篇博客将大家了解若依框架的基本概念和使用方法,帮助您快速上手。

1.什么是若依

RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。

2 .使用若依

2.1系统需求

  • JDK >= 1.8
    MySQL >= 5.7
    Maven >= 3.0
    Node >= 12
    Redis >= 3

2.1下载并运行

在这里插入图片描述

在这里插入图片描述

这里是若依官网,还有在线演示

2.2配置数据库 MySQL、Reids

2.2.1MySQL配置

在这里插入图片描述

2.2.2Redis配置

在这里插入图片描述

2.3前端启动

  • 1、安装依赖 npm install
  • 2 、启动 npm run dev
  • 运行效果
    在这里插入图片描述
    至此,若依前后端分离项目启动完成。

3. 框架结构和模块

3.1后端结构

在这里插入图片描述

3.2前端结构

在这里插入图片描述

3.3内置功能

  • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  • 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  • 岗位管理:配置系统用户所属担任职务。
  • 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  • 参数管理:对系统动态配置常用参数。
  • 通知公告:系统通知公告信息发布维护。
  • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  • 登录日志:系统登录日志记录查询包含登录异常。
  • 在线用户:当前系统中活跃用户状态监控。
  • 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  • 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  • 系统接口:根据业务代码自动生成相关的api接口文档。
  • 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  • 缓存监控:对系统的缓存信息查询,命令统计等。
  • 在线构建器:拖动表单元素生成相应的Vue代码。
  • 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

3.4其他功能和扩展

3.4.1代码生成器

首先在系统工具下的代码生成中选择导入的数据表
在这里插入图片描述
然后点击预览或生成就可以查看或下载若依为我们生成的增删改查所有代码,注意是所有代码。
在这里插入图片描述
这里可以预览代码
在这里插入图片描述
例如controller代码

package com.lzdongrui.system.controller;import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.lzdongrui.common.annotation.Log;
import com.lzdongrui.common.core.controller.BaseController;
import com.lzdongrui.common.core.domain.AjaxResult;
import com.lzdongrui.common.enums.BusinessType;
import com.lzdongrui.system.domain.SysRole;
import com.lzdongrui.system.service.ISysRoleService;
import com.lzdongrui.common.utils.poi.ExcelUtil;
import com.lzdongrui.common.core.page.TableDataInfo;/*** 角色信息Controller* * @author ruoyi* @date 2023-06-29*/
@RestController
@RequestMapping("/system/role")
public class SysRoleController extends BaseController
{@Autowiredprivate ISysRoleService sysRoleService;/*** 查询角色信息列表*/@PreAuthorize("@ss.hasPermi('system:role:list')")@GetMapping("/list")public TableDataInfo list(SysRole sysRole){startPage();List<SysRole> list = sysRoleService.selectSysRoleList(sysRole);return getDataTable(list);}/*** 导出角色信息列表*/@PreAuthorize("@ss.hasPermi('system:role:export')")@Log(title = "角色信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, SysRole sysRole){List<SysRole> list = sysRoleService.selectSysRoleList(sysRole);ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);util.exportExcel(response, list, "角色信息数据");}/*** 获取角色信息详细信息*/@PreAuthorize("@ss.hasPermi('system:role:query')")@GetMapping(value = "/{roleId}")public AjaxResult getInfo(@PathVariable("roleId") Long roleId){return success(sysRoleService.selectSysRoleByRoleId(roleId));}/*** 新增角色信息*/@PreAuthorize("@ss.hasPermi('system:role:add')")@Log(title = "角色信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody SysRole sysRole){return toAjax(sysRoleService.insertSysRole(sysRole));}/*** 修改角色信息*/@PreAuthorize("@ss.hasPermi('system:role:edit')")@Log(title = "角色信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody SysRole sysRole){return toAjax(sysRoleService.updateSysRole(sysRole));}/*** 删除角色信息*/@PreAuthorize("@ss.hasPermi('system:role:remove')")@Log(title = "角色信息", businessType = BusinessType.DELETE)@DeleteMapping("/{roleIds}")public AjaxResult remove(@PathVariable Long[] roleIds){return toAjax(sysRoleService.deleteSysRoleByRoleIds(roleIds));}
}

index.vue代码

<template><div class="app-container"><el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"><el-form-item label="角色名称" prop="roleName"><el-inputv-model="queryParams.roleName"placeholder="请输入角色名称"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item label="角色权限字符串" prop="roleKey"><el-inputv-model="queryParams.roleKey"placeholder="请输入角色权限字符串"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item label="显示顺序" prop="roleSort"><el-inputv-model="queryParams.roleSort"placeholder="请输入显示顺序"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item label="数据范围" prop="dataScope"><el-inputv-model="queryParams.dataScope"placeholder="请输入数据范围"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item label="菜单树选择项是否关联显示" prop="menuCheckStrictly"><el-inputv-model="queryParams.menuCheckStrictly"placeholder="请输入菜单树选择项是否关联显示"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item label="部门树选择项是否关联显示" prop="deptCheckStrictly"><el-inputv-model="queryParams.deptCheckStrictly"placeholder="请输入部门树选择项是否关联显示"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item><el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button><el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button></el-form-item></el-form><el-row :gutter="10" class="mb8"><el-col :span="1.5"><el-buttontype="primary"plainicon="el-icon-plus"size="mini"@click="handleAdd"v-hasPermi="['system:role:add']">新增</el-button></el-col><el-col :span="1.5"><el-buttontype="success"plainicon="el-icon-edit"size="mini":disabled="single"@click="handleUpdate"v-hasPermi="['system:role:edit']">修改</el-button></el-col><el-col :span="1.5"><el-buttontype="danger"plainicon="el-icon-delete"size="mini":disabled="multiple"@click="handleDelete"v-hasPermi="['system:role:remove']">删除</el-button></el-col><el-col :span="1.5"><el-buttontype="warning"plainicon="el-icon-download"size="mini"@click="handleExport"v-hasPermi="['system:role:export']">导出</el-button></el-col><right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar></el-row><el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange"><el-table-column type="selection" width="55" align="center" /><el-table-column label="角色ID" align="center" prop="roleId" /><el-table-column label="角色名称" align="center" prop="roleName" /><el-table-column label="角色权限字符串" align="center" prop="roleKey" /><el-table-column label="显示顺序" align="center" prop="roleSort" /><el-table-column label="数据范围" align="center" prop="dataScope" /><el-table-column label="菜单树选择项是否关联显示" align="center" prop="menuCheckStrictly" /><el-table-column label="部门树选择项是否关联显示" align="center" prop="deptCheckStrictly" /><el-table-column label="角色状态" align="center" prop="status" /><el-table-column label="备注" align="center" prop="remark" /><el-table-column label="操作" align="center" class-name="small-padding fixed-width"><template slot-scope="scope"><el-buttonsize="mini"type="text"icon="el-icon-edit"@click="handleUpdate(scope.row)"v-hasPermi="['system:role:edit']">修改</el-button><el-buttonsize="mini"type="text"icon="el-icon-delete"@click="handleDelete(scope.row)"v-hasPermi="['system:role:remove']">删除</el-button></template></el-table-column></el-table><paginationv-show="total>0":total="total":page.sync="queryParams.pageNum":limit.sync="queryParams.pageSize"@pagination="getList"/><!-- 添加或修改角色信息对话框 --><el-dialog :title="title" :visible.sync="open" width="500px" append-to-body><el-form ref="form" :model="form" :rules="rules" label-width="80px"><el-form-item label="角色名称" prop="roleName"><el-input v-model="form.roleName" placeholder="请输入角色名称" /></el-form-item><el-form-item label="角色权限字符串" prop="roleKey"><el-input v-model="form.roleKey" placeholder="请输入角色权限字符串" /></el-form-item><el-form-item label="显示顺序" prop="roleSort"><el-input v-model="form.roleSort" placeholder="请输入显示顺序" /></el-form-item><el-form-item label="数据范围" prop="dataScope"><el-input v-model="form.dataScope" placeholder="请输入数据范围" /></el-form-item><el-form-item label="菜单树选择项是否关联显示" prop="menuCheckStrictly"><el-input v-model="form.menuCheckStrictly" placeholder="请输入菜单树选择项是否关联显示" /></el-form-item><el-form-item label="部门树选择项是否关联显示" prop="deptCheckStrictly"><el-input v-model="form.deptCheckStrictly" placeholder="请输入部门树选择项是否关联显示" /></el-form-item><el-form-item label="删除标志" prop="delFlag"><el-input v-model="form.delFlag" placeholder="请输入删除标志" /></el-form-item><el-form-item label="备注" prop="remark"><el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog></div>
</template><script>
import { listRole, getRole, delRole, addRole, updateRole } from "@/api/system/role";export default {name: "Role",data() {return {// 遮罩层loading: true,// 选中数组ids: [],// 非单个禁用single: true,// 非多个禁用multiple: true,// 显示搜索条件showSearch: true,// 总条数total: 0,// 角色信息表格数据roleList: [],// 弹出层标题title: "",// 是否显示弹出层open: false,// 查询参数queryParams: {pageNum: 1,pageSize: 10,roleName: null,roleKey: null,roleSort: null,dataScope: null,menuCheckStrictly: null,deptCheckStrictly: null,status: null,},// 表单参数form: {},// 表单校验rules: {roleName: [{ required: true, message: "角色名称不能为空", trigger: "blur" }],roleKey: [{ required: true, message: "角色权限字符串不能为空", trigger: "blur" }],roleSort: [{ required: true, message: "显示顺序不能为空", trigger: "blur" }],status: [{ required: true, message: "角色状态不能为空", trigger: "change" }],}};},created() {this.getList();},methods: {/** 查询角色信息列表 */getList() {this.loading = true;listRole(this.queryParams).then(response => {this.roleList = response.rows;this.total = response.total;this.loading = false;});},// 取消按钮cancel() {this.open = false;this.reset();},// 表单重置reset() {this.form = {roleId: null,roleName: null,roleKey: null,roleSort: null,dataScope: null,menuCheckStrictly: null,deptCheckStrictly: null,status: null,delFlag: null,createBy: null,createTime: null,updateBy: null,updateTime: null,remark: null};this.resetForm("form");},/** 搜索按钮操作 */handleQuery() {this.queryParams.pageNum = 1;this.getList();},/** 重置按钮操作 */resetQuery() {this.resetForm("queryForm");this.handleQuery();},// 多选框选中数据handleSelectionChange(selection) {this.ids = selection.map(item => item.roleId)this.single = selection.length!==1this.multiple = !selection.length},/** 新增按钮操作 */handleAdd() {this.reset();this.open = true;this.title = "添加角色信息";},/** 修改按钮操作 */handleUpdate(row) {this.reset();const roleId = row.roleId || this.idsgetRole(roleId).then(response => {this.form = response.data;this.open = true;this.title = "修改角色信息";});},/** 提交按钮 */submitForm() {this.$refs["form"].validate(valid => {if (valid) {if (this.form.roleId != null) {updateRole(this.form).then(response => {this.$modal.msgSuccess("修改成功");this.open = false;this.getList();});} else {addRole(this.form).then(response => {this.$modal.msgSuccess("新增成功");this.open = false;this.getList();});}}});},/** 删除按钮操作 */handleDelete(row) {const roleIds = row.roleId || this.ids;this.$modal.confirm('是否确认删除角色信息编号为"' + roleIds + '"的数据项?').then(function() {return delRole(roleIds);}).then(() => {this.getList();this.$modal.msgSuccess("删除成功");}).catch(() => {});},/** 导出按钮操作 */handleExport() {this.download('system/role/export', {...this.queryParams}, `role_${new Date().getTime()}.xlsx`)}}
};
</script>

总结

通过本篇博客了解了若依框架的基本概念和使用方法,最后学习优秀开源项目底层的编程思想,设计思路,提高自己的编程能力也很重要


http://chatgpt.dhexx.cn/article/AlWjryTS.shtml

相关文章

从零入门开源框架---若依(前后端分离版)

一、若依是什么&#xff1f; 若依它就是一个开源项目&#xff0c;别人写好的代码&#xff0c;我们拿来进行二次开发,它主要是做数据和权限管理系统。 二、使用背景 任何公司的各种大的项目必然需要一个后台权限管理系统&#xff0c;这是必然的&#xff0c;但是如果不想投入太多…

若依框架学习笔记

若依框架简介 若依框架简介若依框架版本介绍若依框架&#xff08;vue前后端分离版本&#xff09;首页系统管理用户管理角色管理菜单管理 系统监控系统工具表单构建 代码生成 若依框架简介 根据官网介绍若依框架就是一个后台管理框架&#xff0c;主要使用技术在官网上也有介绍我…

若依框架入门(前后端分离版本)

目录 一 若依下载以及配置启动 1.下载地址 2.数据库引入及配置 3.前端vue启动 4.登录及验证 二.关于若依框架的基本使用方法 1.自动生成 2.菜单的配置 3.数据字典 4.关于api接口 5.关于定时任务 6.关于分页 一 若依下载以及配置启动 1.下载地址 学习基础:Spring…

若依框架详细使用

目录 &#x1f3f3;‍&#x1f308;若依是用来干什么的❓ &#x1f6a9;技术支持&#xff1a; &#x1f3f3;‍&#x1f308;如何下载❓ &#x1f6a9;官网地址: &#x1f3f3;‍&#x1f308;如何搭建ruoyi环境❓ &#x1f6a9;若依框架的目录结构 &#x1f6a9; 修改配…

js元素距离和鼠标位置整理

距离 offsetTop / offsetLeft ( 元素与父级 定位元素/table/td/th/body 的距离 ) clientTop / clientLeft ( 元素边框宽度 ) scrollTop / scrollLeft ( 元素滚动距离 ) window.scrollY / window.scrollX ( 文档/页面 滚动距离 ) window.pageYOffset / window.pageXOffset ( 另…

原生js实现跑马灯效果,鼠标放下可以停止跑动

js原生代码跑马灯效果纯js代码如下&#xff1a; 1.首先html的内容&#xff08;里面图片自己可以换&#xff0c;li里面也可以填文字&#xff09; <div> <ul><li>呵呵呵呵呵3</li> <li>叽叽叽叽叽4</li> <li…

unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下

代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI;public class DragCreate : MonoBehaviour {public GameObject Cube;public GameObje…

JavaScript的拖拽事件。

在浏览器可以随意的拖拽&#xff0c;我们来看下怎么实现&#xff1f; 我们具体分析一下步骤&#xff1a; 第一步&#xff1a;鼠标选中需要拖拽的地方&#xff0c;鼠标按下。&#xff08;需要使用事件onmousedown&#xff09; 第二步&#xff1a;鼠标按下后&#xff0c;我们接着…

html修改鼠标手势,css要怎么设置鼠标手势?

在CSS中&#xff0c;可以使用cursor属性来设置鼠标手势。下面本篇文章就来给大家介绍一下cursor属性。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。 cursor属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状。有时我们需要…

java 鼠标响应_java小程序中鼠标事件的响应处理

如何在小程序中实现鼠标响应&#xff1f; public class Hello extends Applet implements MouseListener{ public void init(){ addMouseListener(this); } public void mouseEntered(MouseEvent e){ au.play(); setBackground(Color.blue); } public void mouseExited(MouseEv…

html修改鼠标手势,css设置鼠标手势的方法

css设置鼠标手势的方法 相对于传统HTML的表现而言&#xff0c;CSS能够对网页中的对象的位置排版进行像素级的精确控制&#xff0c;支持几乎所有的字体字号样式&#xff0c;下面小编给大家整理了css设置鼠标手势的方法&#xff0c;供大家参阅。 属性名&#xff1a;cursor 属性值…

鼠标拖动生成画框

需求&#xff1a;鼠标按下拖动生成一个画框 注意点&#xff1a; div 的left和top&#xff1a;如果鼠标当前位置>鼠标起始位置&#xff0c;则为鼠标起始位置&#xff08;鼠标往右拉&#xff09;&#xff1b;如果鼠标当前位置<鼠标起始位置&#xff0c;则为鼠标当前位置(…

QT 实现鼠标拖动(drag)和放下(drop)代码(图形操作四)

拖动的对象&#xff1a; #include "outlistitem.h" #include "ui_outlistitem.h"OutListItem::OutListItem(QWidget *parent) :QWidget(parent),ui(new Ui::OutListItem) {ui->setupUi(this); }OutListItem::~OutListItem() {delete ui; }void OutList…

放下鼠标 全键盘定义你的浏览器

在linux上用过vim的朋友相信都被这个编辑器惊艳到了吧, 但是它只是在linux系统中存在而且是在字符操作界面。但是如果将这种可以全键盘的操作搬到windows上这样的图形界面又是怎样令人去感到惊艳呢&#xff1f; 本文介绍的插件是基于谷歌和火狐的&#xff0c;它可以使你在很大的…

外企工作日常:全英文CrossTalk反串讲-讲前紧张,讲后淡定

起因&#xff1a; 在三周之前我接到了一个任务&#xff0c;更准确讲是我自己“作死”主动领取了一个更复杂的任务。这个任务包含了三个相关联的需求。这个需求说简单也简单&#xff0c;说复杂也复杂&#xff5e; 简单在&#xff1a;就是更改一下更新token时间的一个逻辑&am…

linux周六串讲

esc. //粘贴复制上一条命令的参数 cat /etc/resolv.conf //查看DNS地址 route -n //查看网关 hostname //临时修改主机名 hostnamectl set-hostname 名称 //永久修改主机名 ssh root192.168.10.233 //用windows远程的格式&#xff0c;在CMD窗口输入这个命令 …

【Linux】Linux指令串讲

大家好&#xff0c;今天要开启一个新的专题&#xff1a;Linux 今天的内容是指令还有一些基本的Linux知识补充 由于Linux的知识很难明确写出分类&#xff0c;所以目录就不会做的特别详细完全 喜欢的小伙伴点赞收藏一下不迷路哦 目录 1.目录 2.文件 3.路径 1.目录 1.创建目录…

kafka 串讲:架构模型、角色功能梳理

kafka 串讲&#xff1a;架构模型、角色功能梳理 kafka 的 what why how&#xff0c;先有一个粗略宏观的理解 rabbitmq、各种 mq 的技术选型、横向对比 首先&#xff0c;kafka 是一个消息中间件。我们从一个本质的点聊起&#xff0c;我们有一个系统 service&#xff0c;如果这…

【视频理解】论文串讲

视频理解论文串讲 2020-视频理解综述-A Comprehensive Study of Deep Video Action Recognition2014-CVPR-Large-scale Video Classification with Convolutional Neural Networks2014-NIPS-Two-Stream Convolutional Networks for Action Recognition in Videos2015-CVPR-Beyo…

李沐论文精度系列之八:视频理解论文串讲

文章目录 一 、前言二、 DeepVideo&#xff08;IEEE 2014&#xff09;2.1 模型结构2.2 实验结果2.3 总结 三、双流网络及其变体3.1 Two-Stream&#xff08;NeurIPS 2014&#xff09;3.1.1 简介3.1.2 改进工作 3.2 Two stream LSTM&#xff08;CVPR 2015 &#xff09;3.2.1 模型…