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

news2024/12/24 8:58:41

在这里插入图片描述

🎈个人主页:靓仔很忙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.coloradmin.cn/o/1553482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

骗子查询系统源码

源码简介 小权云黑管理系统 V1.0 功能如下&#xff1a; 1.添加骗子&#xff0c;查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子&#xff0c;后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表&#xff0c;可给网站添加导航友链 7.可添加云黑类…

stm32之GPIO寄存器

文章目录 1 背景2 GPIO寄存器的类型2.1 端口配置寄存器2.2 设置/清除寄存器和位清除寄存器 3 总结 1 背景 C51单片机在进行数据的输入输出时&#xff0c;是直接操作与外部引脚关联的内部寄存器&#xff0c;例如&#xff0c;当设置P2_1为0时&#xff0c;就是将外部引脚的P21引脚…

常用的8个应用和中间件的Docker运行示例

文章目录 1、Docker Web 管理工具 portainer2、在线代码编辑器 Code Server3、MySQL4、Redis5、Nginx6、PostgreSQL7、媒体管理工具 Dim8、Gitlab 1、Docker Web 管理工具 portainer Portainer 是一个轻量级的管理 UI &#xff0c;可让你轻松管理不同的 Docker 环境&#xff0…

map与set容器常见操作详解(含示例代码及注意事项)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

【案例·增】一条insert语句批量插入多条记录

问题描述&#xff1a; 往MySQL中的数据库表中批量插入多条记录&#xff0c;可以使用 SQL 中的 ((), ()…)来处理 案例&#xff1a; INSERT INTO items(name,city,price,number,picture) VALUES(耐克运动鞋,广州,500,1000,003.jpg),(耐克运动鞋2,广州2,500,1000,002.jpg);规则…

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令&#xff0c;我们的电脑不会直接执行C语言代码&#xff0c;编译器把代码转换成二进制的指令&#xff1b; 我们在VS上面写下printf("hello world");这行代码的时候&#xff0c;经过翻译环境&#xff0c;生成可执行的exe文件&…

2. Java基本语法

文章目录 2. Java基本语法2.1 关键字保留字2.1.1 关键字2.1.2 保留字2.1.3 标识符2.1.4 Java中的名称命名规范 2.2 变量2.2.1 分类2.2.2 整型变量2.2.3 浮点型2.2.4 字符型 char2.2.5 Unicode编码2.2.6 UTF-82.2.7 boolean类型 2.3 基本数据类型转换2.3.1 自动类型转换2.2.2 强…

【详细讲解PostCSS如何安装和使用】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d; 希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

macOS Ventura 13.6.6 (22G630) Boot ISO 原版可引导镜像下载

macOS Ventura 13.6.6 (22G630) Boot ISO 原版可引导镜像下载 3 月 26 日凌晨&#xff0c;macOS Sonoma 14.4.1 发布&#xff0c;同时带来了 macOS Ventru 13.6.6 安全更新。 macOS Ventura 13.6 及更新版本&#xff0c;如无特殊说明皆为安全更新&#xff0c;不再赘述。 本站…

MoneyPrinterTurbo搭建详细流程(Linux)及常见问题

先附上链接: MoneyPrinterTurbohttps://github.com/harry0703/MoneyPrinterTurboMoneyPrinterTurbo是一款合成视频的软件。 你只需要提供一个主题或者关键字,就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。 接下来讲解详细的搭…

vue3 渲染一个后端返回的图片字段渲染、table表格内放置图片

一、后端直接返回图片url 当图片字段接口直接返回的是图片url&#xff0c;可以直接放到img标签上 <img v-if"thumbLoader" class"r-image-loader-thumb" :src"resUrl" /> 二、当图片字段接口直接返回的是图片Id 那么就需要去拼一下图片…

SQL-CRUD-2数据库实验

目录 第一关任务描述 相关知识 插入完整内容的行 插入选定内容的行 编程要求 测试说明 第一关代码 第二关任务描述 相关知识 删除表中的指定行 删除表中的所有行 编程要求 测试说明 第二关代码 第三关任务描述 相关知识 更新表中的指定行 编程要求 测试说明…

鸿蒙:搜索框组件Search

搜索框组件&#xff0c;适用于浏览器的搜索内容输入框等应用场景。 说明 该组件从API Version 8开始支持 子组件 无 接口 Search(options?: { value?: string, placeholder?: string, icon?: string, controller?: SearchController }) 参数: 参数名 参数类型 必…

61、服务攻防——中间件安全CVE复现K8sDockerJettyWebsphere

文章目录 K8sDockerWebSphere K8s k8s&#xff1a;简单来说&#xff0c;跟docker一样&#xff0c;是个容器系统。 k8s对外攻击面总结 常见漏洞&#xff1a;未授权访问、提权漏洞 Docker docker逃逸&#xff1a;1、由内核漏洞引起&#xff1b;2、由Docker软件设计引起&#x…

【Git】git status中文文件名编码问题解决

git status中文文件名编码问题解决 一、问题二、解决方法 一、问题 在默认配置下&#xff0c;查看文件状态&#xff0c;中文文件名在工作区状态输出&#xff0c;中文名不能正确显示&#xff0c;而是显示为八进制的字符编码。 PS D:\VS代码\Widget> git status On branch m…

TOP100-回溯(二)

4.39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制…

【计算机网络篇】数据链路层(4.2)可靠传输的实现机制

文章目录 &#x1f354;可靠传输的实现机制⭐停止 - 等待协议&#x1f5d2;️注意 &#x1f50e;停止 - 等待协议的信道利用率&#x1f5c3;️练习题 ⭐回退N帧协议&#x1f388;回退N帧协议的基本工作流程&#x1f50e;无传输差错的情况&#x1f50e;超时重传的情况&#x1f5…

GitHub开源项目权限管理-使用账号和个人令牌访问

1.打开后台账号设置 2.找到左下角的Developer settings 3.找到Personal access tokens 的 Tokens(classic) 4.选择创建新证书 5.填写证书信息 6.点击生成证书&#xff0c;复制证书并且保存起来&#xff08;血泪教训&#xff0c;证书只会在创建时显示一次&#xff0c;以后就再也…

篮球论坛系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. …

iOS UIFont-实现三方字体的下载和使用

UIFont 系列传送门 第一弹加载本地字体:iOS UIFont-新增第三方字体 第二弹加载线上字体:iOS UIFont-实现三方字体的下载和使用 前言 在上一章我们完成啦如何加载使用本地的字体。如果我们有很多的字体可供用户选择,我们当然可以全部使用本地字体加载方式,可是这样就增加了…