【项目技术介绍篇】若依项目代码文件结构介绍
作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。
本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快的、更好的入门JAVA后端开发工作。
文章目录
- 一、前言
- 二、代码文件结构介绍
- (1)前端页面部分
- (2)后端接口部分
- (3)数据库表结构部分
- (4)菜单配置部分
- 三、总结
一、前言
由于本专栏项目实战学习,是以若依开源项目RuoYi-Cloud为示例。所以,本文介绍一下若依开源项目RuoYi-Cloud中若依管理后台系统的代码文件结构,以管理后台系统中的岗位管理模块为示例。
-
若依项目RuoYi-Cloud简介
若依项目RuoYi-Cloud 是一个 Java EE 企业级的开源免费的快速开发平台,是一个基于Spring Boot、Spring Cloud & Alibaba的微服务的权限管理系统。如果想快速的开发一个Java EE 企业级项目,可以在若依项目的基础上,开发定制自己的项目。尤其是如果要开发一个后台管理系统,由于若依开源项目中已经内置完整的权限管理模块,所以能够更加快速的完成项目的开发工作; -
若依项目RuoYi-Cloud技术选型
采用前后端分离的模式,微服务版本前端基于 Vue/Element UI ;
后端采用Spring Boot、Spring Cloud & Alibaba微服务架构;
注册中心、配置中心选型Nacos,权限认证使用Redis;
流量控制框架选型Sentinel,分布式事务选型Seata; -
若依项目官方网站和文档地址
若依官网地址:https://www.ruoyi.vip/
若依演示地址:https://vue.ruoyi.vip/login
技术文档地址:https://doc.ruoyi.vip/ruoyi-cloud/
代码下载地址:https://gitee.com/y_project/RuoYi-Cloud
二、代码文件结构介绍
- 在若依项目RuoYi-Cloud中,编写一个简单的功能模块,需要编写哪些代码文件呢?
百度网盘代码下载地址:https://pan.baidu.com/s/10FyzBDDB1HHng7LUW3Rkkw?pwd=n8ci
提取码:n8ci
这里以岗位管理模块开发为示例,编写一个完整的岗位管理模块,大概包括前端页面部分、后端接口部分、数据库表结构部分以及菜单配置部分等四个部分的内容。
如下图所示:

(1)前端页面部分
-
index.vue:岗位管理模块view文件,用于控制页面布局展示等等,比如页面上输入框、按钮、列表、文本框等等组件,如何排列展示;各种组件点击后如何交互等等;
-
post.js:岗位管理模块请求文件,用于跟后端服务器发送数据请求等等,比如页面上点击搜索按钮后,给后端服务器发送请求,获取数据等等;
(2)后端接口部分
-
SysPostController.java:岗位管理模块controller控制层文件;
-
ISysPostService.java:岗位管理模块service业务层接口定义文件;
-
SysPostServiceImpl.java:岗位管理模块service业务层接口实现文件;
-
SysPostMapper.java:岗位管理模块dao数据持久层接口定义文件;
-
SysPostMapper.xml:岗位管理模块dao数据持久层接口实现文件;
-
SysPost.java:岗位管理模块pojo实体类文件;
后端包括哪三层架构,调用关系是什么样的?
后端接口主要是包括controller层、service层和dao层,是应用程序中常见的三层架构;它们之间的调用关系如下:
controller层,作为控制层,负责接收用户请求并将请求传递给service层,之后将处理完成的结果返回给客户端。
service层,作为业务层,位于controller层和dao层之间,负责业务处理。它根据业务需求调用dao层进行数据操作,并封装了一系列的操作以及对外提供业务功能的调用接口。service层的设计旨在封装业务逻辑,提高代码的复用性和可维护性。
dao层。作为数据持久层,位于最底层,负责与数据库进行交互,提供对数据的持久化操作。dao层定义了用于数据访问的接口或类,通常使用的数据访问技术MyBatis等来简化数据库操作。
总的来说,这三层之间的关系和调用顺序反映了应用程序的设计原则,即保持代码的清晰、可维护和可扩展。通过依赖注入和配置的方式,这三层在框架中形成了一个清晰的层次结构,实现了数据访问、业务逻辑处理和请求响应的协同工作。
除了三层架构之后,另外,还包括pojo(Plain Ordinary Java Object)实体类文件,可以理解为简单的实体类,主要用于定义与数据库对象应的属性,方便操作数据库中的数据表;
(3)数据库表结构部分
- sys_post.sql:岗位管理模块建表脚本,用于在数据库中,创建对应的数据表,存储和管理用户界面上收集的数据;
(4)菜单配置部分
- postMenu.sql:岗位管理模块配置菜单脚本,用于生成若依管理后台系统中左侧的菜单信息。配置完成后,我们可以在若依管理后台系统中左侧的菜单栏中,找到岗位管理菜单。
三、总结
以上,介绍了若依开源项目RuoYi-Cloud中若依管理后台系统的代码文件结构。另外,对三层架构以及它们之间的调用关系,也做了简单的介绍。
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)
相关文章:
【项目技术介绍篇】若依项目代码文件结构介绍
作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是࿰…...
实现DevOps需要什么?
实现DevOps需要什么? 硬性要求:工具上的准备 上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下: 代码管理(SCM):GitHub、GitLab、BitBucket、SubV…...
Linux小程序: 手写自己的shell
注意: 本文章只是为了理解shell内部的工作原理, 所以并没有完成shell的所有工作, 只是完成了shell里的一小部分工作 #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include &l…...
javaSwing租户管理系统
简介 欢迎阅读本篇博客,今天我将为大家介绍一个基于Java Swing开发的租户管理系统。该系统具有登录、注册、添加租户、查询租户信息、修改租户信息、删除租户、修改密码、退出登录等功能模块,旨在提供一个便捷的租户管理解决方案。 一、项目介绍 该租…...
cesium实现竖立的圆
cesium中的圆是平行于地面的,想实现竖起来的圆可以使用ellipsoid,设置其中一个轴的radii值为一个很小的值,比如0.00001,则这个轴上的宽度就会非常小,看起来就是一个圆面。 一、画圆ellipse,此处也把画圆的代…...
汽车电子行业知识:智能汽车电子架构
文章目录 3.智能汽车电子架构3.1.汽车电子概念及发展3.2.汽车电子架构类型3.2.1.博世汽车电子架构3.2.2.联合电子未来汽车电子架构3.2.3.安波福汽车电子架构3.2.4.丰田汽车电子架构3.2.5.华为汽车电子架构 3.智能汽车电子架构 3.1.汽车电子概念及发展 汽车电子是车体汽车电子…...
LeetCode146:LRU缓存
leetCode:146. LRU 缓存 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#x…...
【Unity音游制作】你玩过节奏大师吗?(Koreographe插件导入游戏主体)【一】
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1
文章目录 问题解决步骤 问题 因为需要用到gdb一些指令,但是gdb8.x好像存在普遍的问题,实现不了某些指令,比方说set detach-on-fork on,升级版本也没有比较好的教程 经过我不断的试错,我终于升级成功了!&a…...
【公示】2023年度青岛市级科技企业孵化器拟认定名单
根据《青岛市科技企业孵化器管理办法》(青科规〔2023〕1号)(以下简称《管理办法》)、《关于开展2023年度市级科技企业孵化器认定申报工作的通知》,经申报受理、区市推荐、形式审查、专家评审及现场核查等程序ÿ…...
【软件安装】(十四)Ubuntu22.04安装Psensor硬件监视器
一个愿意伫立在巨人肩膀上的农民...... Ubuntu系统硬件运行查询输入指令太繁琐,终端展示不直观,因此这款具有可视化监控Ubuntu系统下当前电脑的硬件CPU(中央处理器)、GPU(显卡)和硬盘等温度等功能ÿ…...
数组合并小程序
题目: 输入有序数组a, b, 不使用排序算法,及额外数组,按大小顺序合并a, b数组,元素不重复; 思路: 1. 如果比插入的数组大,那么往后插入,如果继续有大的,就移动位置插入…...
python练习二
# Demo85def pai_xu(ls_test):#创建一个列表排序函数命名为pai_xu# 对创建的函数进行注释"""这是一个关于列表正序/倒序排列的函数:param ls_test: 需要排序的列表:return:"""ls1 [int(ls_test[i]) for i in range(len(ls_test))]#对input输入的…...
专升本-数字媒体
数字媒体 概念: 媒体:是信息的载体,传播信息的媒介,能为信息的传播提供平台 数字媒体:多重媒体,使用文字,数据,图像,声音等各种媒体 数字媒体技术:利用计…...
蓝桥杯算法题-发现环
问题描述 小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增…...
Oracle存数字精度问题number、binary_double、binary_float类型
--表1 score是number(10,5)类型 create table TEST1 (score number(10,5) ); --表2 score是binary_double类型 create table TEST2 (score binary_double ); --表3 score是binary_float类型 create table TEST3 (score binary_float );实验一:分别往三张表插入 小数…...
Java封装最佳实践:打造高内聚、低耦合的优雅代码~
个人主页:秋风起,再归来~ 文章专栏:javaSE的修炼之路 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、封装 1.1 封装的概念 面向对象程序三大…...
开源,微信小程序-超级计算器T3000 简介
笔者于四年前自学微信小程序开发,这个超级计算器T3000就是当时的练习作品。超级计算器T3000的功能有很多,其中的核心技术是矩阵计算,使用的工具库是math.js,其次是复杂运算和分式运算。关于math.js的使用,可以参考另一…...
Dimitra:基于区块链、AI 等前沿技术重塑传统农业
根据 2023 年联合国粮食及农业组织(FAO)、国际农业发展基金(IFAD)等组织联合发布的《世界粮食安全和营养状况》报告显示,目前全球约有 7.35 亿饥饿人口,远高于 2019 年的 6.13 亿,这意味着农业仍…...
降低项目延期概率的5大注意事项
降低项目延期概率对项目非常重要。因为项目延期往往会导致成本增加,降低客户满意度,影响企业在市场上的竞争力,造成资源浪费。因此,我们需要降低项目延期概率,实现企业长远发展。 而降低项目延期概率,一般来…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
