springboot实战---5.最简单最高效的后台管理系统开发

在这里插入图片描述

🎈个人主页:靓仔很忙i
💻B 站主页:👉B站👈
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:SpringBoot
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!


天下大势,分久必合,合久必分。前后端分离已经火了很多年了,随着现在互联网越来越卷,工程师都变成了全站工程师。想必大家对繁琐CRUD微服务都很厌倦了。大道至简,返璞归真。其实guns出来已经很多年头了,它也出了很多新版本,包括前后端不分离的,以及微服务版本的。但用来用去,还是感觉最早开源的还是最好用的。今天推荐给大家,这个特别适合做小项目和毕设,简单易学,希望大家喜欢。

用Guns开发手头常备如下几个工具:
guns4.2代码:https://gitee.com/stylefeng/guns/tree/v4.2
mybatis-plus文档:http://mp.baomidou.com/
beetl文档:http://ibeetl.com/guide/#beetl
layui文档:https://www.layui.com/doc/
Spring Boot文档:https://docs.spring.io/spring-boot/docs/current/reference/html/

Guns开发五部曲 :

1.建表
2.代码生成
3.添加菜单
4.生成页面表格
5.生成数据访问层,编写业务代码

下面以一个订单业务为例,实战演练如何用Guns编写简单的增删改查业务

1.建表

新建订单表如下:
在这里插入图片描述

DROP TABLE IF EXISTS `biz_order`;
CREATE TABLE `biz_order` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`goods_name` varchar(255) DEFAULT NULL COMMENT '商品名称',
`place` varchar(255) DEFAULT NULL COMMENT '下单地点',
`create_time` datetime DEFAULT NULL COMMENT '下单时间',
`user_name` varchar(255) DEFAULT NULL COMMENT '下单用户名称',
`user_phone` varchar(255) DEFAULT NULL COMMENT '下单用户电话',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='订单表';
SET FOREIGN_KEY_CHECKS = 1;

2.代码生成

登录管理系统,打开代码生成页面,填写如下内容,注意看 红线部分 内容
在这里插入图片描述

生成代码之后需要重启一下管理系统,生成的代码才可以生效!
*生成的conntroller层中,baseController的包路径不对,需要替换成
import com.stylefeng.guns.core.base.controller.BaseController;
在这里插入图片描述

3.添加菜单与分配权限

生成代码之后,需要为管理系统添加菜单,才可以让新增加的业务显示到页面上,添加菜单的方式: 依次点击系统管理->菜单管理->点击添加,打开添加页面,如下
在这里插入图片描述

这里需要注意如下几点:
选择语言
请求地址需要和Controller中的RequestMapping的值一致
排序为同层级菜单中显示菜单的顺序
父级编号的选择可以更改菜单插入的位置
图标可以从H+的资源库中获取
因为菜单管理不单单是对管理系统中的菜单管理,也包含权限的管理,所以需要选择是否是菜单这个选项
执行完成后可以看到,菜单管理页面中已经有了新添加的订单相关的菜单和资源,如下
在这里插入图片描述

在添加完菜单只有,还需要给角色分配相关的菜单权限,才可以把新增的业务显示到菜单上
打开 系统管理 -> 角色管理,给当前的登录的超级管理员,增加刚才新增的权限,如下图
在这里插入图片描述

配置完成,重启项目,刷新页面即可看到,即可看到新增加的菜单,如下图,若看不到请重新登录
在这里插入图片描述

4.生成页面表格

打开项目中的 guns-admin -> src -> main -> webapp -> static -> modular.system -> biz_order ->biz_order.js ,给当前的登录的超级管理员,增加刚才新增的权限,如下图
在这里插入图片描述

处理后的前端页面,如下如图
在这里插入图片描述

5.生成数据访问层,编写业务代码

5.1生成数据访问层

打开项目中的 guns-admin -> src -> main -> java-> generator-> MyBatisPlusGenerator,注意修改红色区域的内容,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改完成后,运行main函数,运行成功后会弹出下面的窗体
在这里插入图片描述

生成的代码如下:
在这里插入图片描述

5.2 编写业务逻辑代码

在这里插入图片描述

业务逻辑代码编写完成后,重启项目,运行后,如图
在这里插入图片描述

6.guns前后端交互

后端数据发送到前端响应前端请求
打开网页主页点击学校管理前端发送localhost:8080/school请求
在这里插入图片描述

后端schoolController接收请求并响应对应界面
前端对应界面
在这里插入图片描述

根据界面引入的js路径找到对应的表格<#table id=“SchoolTable”/>并初始化
在这里插入图片描述

这里会处理一个函数从后台拉取对应的数据并显示
在这里插入图片描述

该函数向后台发送"/school/list" 请求,dispatchServlet解析后在SchoolController类找到对应的方法并执行
在这里插入图片描述

执行schoolService.selectSchool(null)方法并返回结果schoolService为service层的ISchoolService接口代理对象
在这里插入图片描述

执行service实现层selectList()方法并返回结果,selectList()方法为系统封装到IService类的方法, ISchoolService继承IService,在开发过程中需要添加方法时直接添加在ISchoolService就可以,这里为方便举例使用selectSiteSchool()方法举例
在这里插入图片描述

执行ISchoolService实现类的selectSiteSchool()方法并返回结果,schoolMapper为system.dao层的SchoolMapper接口代理对象
在这里插入图片描述

执行selectSiteSchool()方法方式为扫描system.dao.mapping包下SchoolMapper.xml里id为selectSiteSchool的sql语句并返回结果集
在这里插入图片描述

至此,controller层方法执行完毕,并将sql查询结果集返回给前端页面进行响应
收集页面用户输入数据存入数据库的流程
以添加学校为例,点击页面添加按钮,前端发送school_add请求到后端controller层
在这里插入图片描述

执行controller层schoolAdd()方法响应添加界面
在这里插入图片描述

添加学校界面
在这里插入图片描述

输入数据点击添加后根据路径src="${ctxPath}/static/modular/ies/school/school_info.js执行SchoolInfoDlg.addSubmit()方法
在这里插入图片描述

顺序执行addSubmit()里的clearData()方法
在这里插入图片描述

collectData()方法
在这里插入图片描述

collectData()方法里执行set()方法
在这里插入图片描述

利用ajax将数据传输至后端,接收路径为/school/add

后端接收地址
在这里插入图片描述

至此,方法执行顺序和schoolService.selectSiteSchool()方法执行顺序相同;

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS详解-设计模式

工厂模式&#xff1a; 单例模式&#xff1a; // 1、定义一个类class SingleTon{// 2、添加私有静态属性static #instance// 3、添加静态方法static getInstance(){// 4、判断实例是否存在if(!this.#instance){// 5、实例不存在&#xff0c;创建实例this.#instance new Single…

蓝桥备赛——前缀和

题干 我的 Code(50%样例) 对于上述题目的思路,我的想法是使用两个list存储对应的索引,一个存储头索引,一个存储结束索引。 然后使用全排列,计算所有列表元素之间的索引差,大于等于k的作为符合条件的,使用count计数器加一。 k=int(input()) s,c1,c2=map(str,input()…

FebHost:什么是土耳其.TR域名?

当前互联网高速发展,一个国家的顶级域名已成为其网络形象的重要标识。近期,土耳其国家顶级域名”.TR”引起了广泛关注,成为业界热议的话题。 作为代表土耳其共和国的国家顶级域名(ccTLD),.TR域名于1991年首次引入,由土耳其科技和信息技术部负责管理。除了常见的”.com.tr”、”…

服务器硬件构成与性能要点:CPU、内存、硬盘、RAID、网络接口卡等关键组件的基础知识总结

文章目录 服务器硬件基础知识CPU&#xff08;中央处理器&#xff09;内存&#xff08;RAM&#xff09;硬盘RAID&#xff08;磁盘阵列&#xff09;网络接口卡&#xff08;NIC&#xff09;电源散热器主板显卡光驱 服务器硬件基础知识 服务器是一种高性能计算机&#xff0c;用于在…

深度学习十大算法之深度Q网络(DQN)

一、简介 深度Q网络&#xff08;DQN&#xff09;是一种结合了深度学习和强化学习的算法&#xff0c;它在近年来成为了人工智能领域的一个热点。DQN首次被引入是在2013年&#xff0c;由DeepMind的研究人员开发。它标志着深度学习技术在解决高维度决策问题上的一大突破。 DQN的…

Netty源码分析一启动流程剖析

我们知道Netty框架是基于NIO网络编程模型实现的&#xff0c;本篇文章就基于NIO的启动流程来剖析Netty启动流程的源码 NIO启动流程 首先我们先来看一下NIO的启动流程 //1 netty 中使用 NioEventLoopGroup &#xff08;简称 nio boss 线程&#xff09;来封装线程和 selector S…

[C++初阶]初识C++(二)

建议先看完上篇&#xff1a;[C初阶]初识C(一)—————命名空间和缺省函数-CSDN博客 本篇部分代码和文案来源&#xff1a;百度文库&#xff0c;知乎&#xff0c;比特就业课 1.函数重载 自然语言中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真…

Linux目录结构知识

一、认识Linux目录 1) Linux目录结构知识 1&#xff09; win: 目录顶点是盘符 C/D/E 。所有的目录结构都在不同的盘符下面&#xff0c;不同的盘之间不能沟通的。 2&#xff09; Linux: 目录顶点是 / &#xff0c;称为根。所有的目录结构都在根下面&#xff0c;他的目录之间都…

基于SpringBoot Vue养老院管理

一、&#x1f4dd;功能介绍 基于SpringBoot Vue养老院管理 角色&#xff1a;管理员、企业、老人子女、老人 管理员&#xff1a;管理员登录进入养老院管理系统可以对系统首页、个人中心、服务人员管理、老人管理、老人子女管理、老人档案管理、社区活动管理、活动记录管理、床…

LogicFlow 在HTML中的引入与使用

LogicFlow 在HTML中的引入与使用 LogicFlow的引入与使用&#xff0c;相较于BPMNJS相对容易一些&#xff0c;更加灵活一些&#xff0c;但是扩展代码可能写得更多一些。 示例展示 使用方式 这个的使用方式就简单很多了&#xff0c;利用cdn把js下载下来&#xff0c;引入到HTML文…

【Linux】HTTP协议

HTTP协议 1.认识URL2.urlencode和urldecode3.HTTP协议格式4.HTTP协议基本工作流程5.HTTP的方法6.HTTP的状态码7.HTTP常见Header8.长连接9.cookie&&session会话保持10.基本工具(postman,fiddler) 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 目前基本…

JDK安全剖析之安全处理入门

0.前言 Java 安全包括大量 API、工具以及常用安全算法、机制和协议的实现。Java 安全 API 涵盖了广泛的领域&#xff0c;包括加密、公钥基础设施、安全通信、身份验证和访问控制。Java 安全技术为开发人员提供了编写应用程序的全面安全框架&#xff0c;还为用户或管理员提供了…

相对论中关于光速不变理解的补充

近几个月在物理直播间聊爱因斯坦相对论&#xff0c;发现好多人在理解爱因斯坦相对论关于基本假设&#xff0c;普遍认为光速是不变的&#xff0c;质能方程 中光速的光速不变的&#xff0c;在这里我对这个假设需要做一个补充&#xff0c;他是基于质能方程将光速C 在真是光速变化曲…

平衡二叉树,红黑树,B树和B+树的区别及其应用场景

平衡二叉树 基础数据结构左右平衡高度差大于1会自旋每个节点记录一个数据 平衡二叉树&#xff08;AVL&#xff09; AVL树全称G.M. Adelson-Velsky和E.M. Landis&#xff0c;这是两个人的人名。 平衡二叉树也叫平衡二叉搜索树&#xff08;Self-balancing binary search tree…

计算机视觉新巅峰,微软牛津联合提出MVSplat登顶3D重建

开篇&#xff1a;探索稀疏多视图图像的3D场景重建与新视角合成的挑战 3D场景重建和新视角合成是计算机视觉领域的一项基础挑战&#xff0c;尤其是当输入图像非常稀疏&#xff08;例如&#xff0c;只有两张&#xff09;时。尽管利用神经场景表示&#xff0c;例如场景表示网络&a…

Spring Boot 接入 Redis

Spring Boot 接入 Redis 简介 Redis 是一种访问速度非常快的内存数据结构存储&#xff0c;用作数据库、缓存、消息代理和流引擎。提供 strings、hashes、lists、sets 等数据结构。可以解决会话缓存、消息队列、分布式锁、定期将数据集存储到硬盘等功能。 通过 Redis 设计实现…

云原生架构(微服务、容器云、DevOps、不可变基础设施、声明式API、Serverless、Service Mesh)

前言 读完本文&#xff0c;你将对云原生下的核心概念微服务、容器云、DevOps、Immutable Infrastructure、Declarative-API、Serverless、Service Mesh 等有一个相对详细的了解&#xff0c;帮助你快速掌握云原生的核心和要点。 因题主资源有限, 这里会选用部分云服务商的组件进…

Aurora8b10b(2)上板验证

文章目录 前言一、AXI_Stream数据产生模块二、上板效果总结 前言 上一篇内容我们已经详细介绍了基于aurora8b10b IP核的设计&#xff0c;本文将基于此进一步完善并且进行上板验证。 设计思路及代码思路参考FPGA奇哥系列网课 一、AXI_Stream数据产生模块 AXIS协议是非常简单的…

小林coding图解计算机网络|TCP篇06|如何理解TCP面向字节流协议、为什么UDP是面向报文的协议、如何解决TCP的粘包问题?

小林coding网站通道&#xff1a;入口 本篇文章摘抄应付面试的重点内容&#xff0c;详细内容还请移步&#xff1a;小林coding网站通道 文章目录 如何理解UDP 是面向报文的协议如何理解字节流如何解决粘包固定长度的消息 特殊字符作为边界自定义消息结构 如何理解UDP 是面向报文的…

第20次修改了可删除可持久保存的前端html备忘录:重新布局

第20次修改了可删除可持久保存的前端html备忘录&#xff1a;重新布局 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…