当前位置: 首页 > news >正文

【项目技术介绍篇】若依项目代码文件结构介绍

作者介绍:本人笔名姑苏老陈,从事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开发工作,但不知道从何处入手。于是&#xff0…...

实现DevOps需要什么?

实现DevOps需要什么? 硬性要求:工具上的准备 上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下: 代码管理(SCM):GitHub、GitLab、BitBucket、SubV…...

Linux小程序: 手写自己的shell

注意&#xff1a; 本文章只是为了理解shell内部的工作原理&#xff0c; 所以并没有完成shell的所有工作&#xff0c; 只是完成了shell里的一小部分工作 #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include &l…...

javaSwing租户管理系统

简介 欢迎阅读本篇博客&#xff0c;今天我将为大家介绍一个基于Java Swing开发的租户管理系统。该系统具有登录、注册、添加租户、查询租户信息、修改租户信息、删除租户、修改密码、退出登录等功能模块&#xff0c;旨在提供一个便捷的租户管理解决方案。 一、项目介绍 该租…...

cesium实现竖立的圆

cesium中的圆是平行于地面的&#xff0c;想实现竖起来的圆可以使用ellipsoid&#xff0c;设置其中一个轴的radii值为一个很小的值&#xff0c;比如0.00001&#xff0c;则这个轴上的宽度就会非常小&#xff0c;看起来就是一个圆面。 一、画圆ellipse&#xff0c;此处也把画圆的代…...

汽车电子行业知识:智能汽车电子架构

文章目录 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&#xff1a;146. LRU 缓存 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#x…...

【Unity音游制作】你玩过节奏大师吗?(Koreographe插件导入游戏主体)【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1

文章目录 问题解决步骤 问题 因为需要用到gdb一些指令&#xff0c;但是gdb8.x好像存在普遍的问题&#xff0c;实现不了某些指令&#xff0c;比方说set detach-on-fork on&#xff0c;升级版本也没有比较好的教程 经过我不断的试错&#xff0c;我终于升级成功了&#xff01;&a…...

【公示】2023年度青岛市级科技企业孵化器拟认定名单

根据《青岛市科技企业孵化器管理办法》&#xff08;青科规〔2023〕1号&#xff09;&#xff08;以下简称《管理办法》&#xff09;、《关于开展2023年度市级科技企业孵化器认定申报工作的通知》&#xff0c;经申报受理、区市推荐、形式审查、专家评审及现场核查等程序&#xff…...

【软件安装】(十四)Ubuntu22.04安装Psensor硬件监视器

一个愿意伫立在巨人肩膀上的农民...... Ubuntu系统硬件运行查询输入指令太繁琐&#xff0c;终端展示不直观&#xff0c;因此这款具有可视化监控Ubuntu系统下当前电脑的硬件CPU&#xff08;中央处理器&#xff09;、GPU&#xff08;显卡&#xff09;和硬盘等温度等功能&#xff…...

数组合并小程序

题目&#xff1a; 输入有序数组a, b, 不使用排序算法&#xff0c;及额外数组&#xff0c;按大小顺序合并a, b数组&#xff0c;元素不重复&#xff1b; 思路&#xff1a; 1. 如果比插入的数组大&#xff0c;那么往后插入&#xff0c;如果继续有大的&#xff0c;就移动位置插入…...

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输入的…...

专升本-数字媒体

数字媒体 概念&#xff1a; 媒体&#xff1a;是信息的载体&#xff0c;传播信息的媒介&#xff0c;能为信息的传播提供平台 数字媒体&#xff1a;多重媒体&#xff0c;使用文字&#xff0c;数据&#xff0c;图像&#xff0c;声音等各种媒体 数字媒体技术&#xff1a;利用计…...

蓝桥杯算法题-发现环

问题描述   小明的实验室有N台电脑&#xff0c;编号1~N。原本这N台电脑之间有N-1条数据链接相连&#xff0c;恰好构成一个树形网络。在树形网络上&#xff0c;任意两台电脑之间有唯一的路径相连。    不过在最近一次维护网络时&#xff0c;管理员误操作使得某两台电脑之间增…...

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 );实验一&#xff1a;分别往三张表插入 小数…...

Java封装最佳实践:打造高内聚、低耦合的优雅代码~

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、封装 1.1 封装的概念 面向对象程序三大…...

开源,微信小程序-超级计算器T3000 简介

笔者于四年前自学微信小程序开发&#xff0c;这个超级计算器T3000就是当时的练习作品。超级计算器T3000的功能有很多&#xff0c;其中的核心技术是矩阵计算&#xff0c;使用的工具库是math.js&#xff0c;其次是复杂运算和分式运算。关于math.js的使用&#xff0c;可以参考另一…...

Dimitra:基于区块链、AI 等前沿技术重塑传统农业

根据 2023 年联合国粮食及农业组织&#xff08;FAO&#xff09;、国际农业发展基金&#xff08;IFAD&#xff09;等组织联合发布的《世界粮食安全和营养状况》报告显示&#xff0c;目前全球约有 7.35 亿饥饿人口&#xff0c;远高于 2019 年的 6.13 亿&#xff0c;这意味着农业仍…...

降低项目延期概率的5大注意事项

降低项目延期概率对项目非常重要。因为项目延期往往会导致成本增加&#xff0c;降低客户满意度&#xff0c;影响企业在市场上的竞争力&#xff0c;造成资源浪费。因此&#xff0c;我们需要降低项目延期概率&#xff0c;实现企业长远发展。 而降低项目延期概率&#xff0c;一般来…...

在VUE页面调用Extjs中定义的方法

VUE版本&#xff1a;VUE2 EXTJS版本&#xff1a;4.2.6 1、在extjs页面上写监听事件&#xff08;主要利用了window.addEventListener来监听message事件 window.addEventListener("message", function(event) {// 这里写监听到消息后的逻辑&#xff0c;event.data就是…...

【独立开发前线】Vol.32 能够坚持下去的人并没有你想象的那么多

如果你有一个博客&#xff0c;你就已经超过了80%的独立开发者&#xff1b; 如果你每周更新自己的博客&#xff0c;你就已经超过了90%的独立开发者&#xff1b; 如果你每天更新自己的博客&#xff0c;你就已经超过了99%的独立开发者&#xff1b; 能够坚持下去的人并没有你想象…...

Java 扫描某包下所有类的注解并获得注解值

背景 &#xff1a; 需求 需要获取某个包下的所有的注解 并不是全部项目的 所以 只用针对某个包 进行扫描 获取注解 数据就行 百度了一圈 spring boot 没有自带的 获取注解集合的方法 在看 php 中 hyperf 框架 看到了 这个方法 就是因为 我需求是 php 和java 合体 微服务开发 …...

根据实例逐行分析NIO到底在做什么

Selector&#xff08;选择器&#xff09;是 Channel 的多路复用器&#xff0c;它可以同时监控多个 Channel 的 IO 状况&#xff0c;允许单个线程来操作多个 Channel。Channel在从Buffer中获取数据。 选择器、通道、缓冲池是NIO的核心组件。 一、新建选择器 此时选择器内只包含…...

TypeScript-对象的类型(接口)

1.接口 说明&#xff1a;TypeScript 中的接口&#xff08;Interfaces&#xff09;是一种用来定义对象的结构或者契约的方式。通过接口&#xff0c;你可以定义对象应该具有哪些属性、方法以及它们的类型。 2.一致性 说明&#xff1a;接口的属性名和对象的属性名必须一致性。 …...

Windows服务器安全策略配置几个步骤,轻松加强服务器安全

Windows服务器安全策略怎么做&#xff1f;不要觉得这是一个非常深奥遥不可及的问题&#xff0c;其实也是从各个方面去加固系统的安全性而已&#xff0c;它没有一个定论&#xff0c;今天德迅云安全就跟用户们分享一下windows服务器基本安全策略保障服务器基本安全的一些简单实用…...

Hive详解(2)

​​Hive 表结构 分区表 多字段分区&#xff1a;需要使用多个字段来进行分区&#xff0c;那么此时字段之间会构成多层目录&#xff0c;前一个字段形成的目录会包含后一个字段形成的目录&#xff0c;从而形成多级分类的效果。例如商品的大类-小类-子类&#xff0c; 省市县、年…...

【浅尝C++】STL第二弹=>迭代器失效详解/vector常用接口使用示例/vector底层结构探索/vector模拟实现代码详解

&#x1f3e0;专栏介绍&#xff1a;浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 &#x1f3af;每日格言&#xff1a;每日努力一点点&#xff0c;技术变化看得见。 文章目录 vector介绍vector常用接口及使用示例构造类函数迭代器的使用容量操作增删改查 迭代器失效详解与v…...

【pytest】pytest` 中几种常用的参数化方法

pytest 是一个强大的 Python 测试框架&#xff0c;它提供了多种参数化测试的方法。参数化测试允许你使用不同的输入集来运行相同的测试逻辑&#xff0c;从而确保代码在各种条件下都能正常工作。以下是 pytest 中几种常用的参数化方法&#xff1a; 1. 使用 pytest.mark.paramet…...

设计模式-装饰者模式在Java中使用实例-打印发票装饰抬头和脚注

场景 设计模式-装饰者模式在Java中的使用示例&#xff1a; 设计模式-装饰者模式在Java中的使用示例_java装饰者模式例子-CSDN博客 上面装饰器的调用示例如下 AbstarctComputer computer;//要买1台电脑computer new BaseComputer();//加一个内存条computer new MemoryDecor…...

怎样做浏览的网站不被发现/深圳快速seo排名优化

在docker写 dockerfile的时候。如果你需要传完整文件夹上去而不是把里面所有的内容都递归一个一个拿出来&#xff0c;那么你需要就不能直接用copy命令&#xff0c;需要其他婉转的方法。例如&#xff1a;先进行压缩在copy。 Note: The directory itself is not copied, just it…...

如何开发一个网站/刷评论网站推广

基本介绍 redis-shake是阿里开源的用于redis数据同步的工具&#xff0c;支持的迁移方式如下&#xff1a; 恢复restore&#xff1a;将RDB文件恢复到目的redis数据库。 备份dump&#xff1a;将源redis的全量数据通过RDB文件备份起来。 解析decode&#xff1a;对…...

网站页面设计多少钱/美国最新消息今天 新闻

Dependency Walker 查看dll的依赖 reflector 反射工具查看dll结构 转载于:https://www.cnblogs.com/maoya/archive/2013/04/19/3031249.html...

做网站公司融资多少钱/seo投放营销

Unix 系统里&#xff0c;每行结尾只有“<换行>”&#xff0c;即“\n”&#xff1b;Windows系统里面&#xff0c;每行结尾是“<换行><回车 >”&#xff0c;即“\r\n”&#xff1b;Mac系统里&#xff0c;每行结尾是“<回车>”,即"\r"。一个直接…...

专业做二手网站/品牌推广的概念

一. 面试题及剖析 1. 今日面试题 Redis缓存如何实现? 什么是热key? 怎么发现热key? 如何解决热key问题? 如何保证Redis缓存与MySQL数据库的一致性? 你遇到过哪些常见的缓存问题? 什么是缓存雪崩?缓存穿透怎么解决? 2. 题目剖析 在上一篇文章中,壹哥跟大家详细地讲解…...

手机视频网站怎么做/企业文化设计

最近项目要用到subversion来做版本控制&#xff0c;一次找了些svn和VisualSVN的资料 软件需求&#xff1a; vs2005&#xff1b;TortoiseSVN-1.4.4.9706-win32-svn-1.4.4&#xff1b;VisualSVN-1.3.1 1.简介 VisualSVN是个和Visual Studio 配套的软件,实现SVN功能 svn是sub…...