推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

项目介绍

  • 前后端分离架构,分离开发,分离部署,前后端互不影响。
  • 前端技术采用vue antdvPro axios。
  • 后端采用spring boot MyBatis-plus hutool等,开源可靠。
  • 基于spring security(jwt) 用户UUID双重认证。
  • 基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。
  • 基于hibernate validator实现的校验框架,支持自定义校验注解。
  • 提供Request-No的响应header快速定位线上异常问题。
  • 在线用户可查,可在线踢人,同账号登录可同时在线,可单独在线(通过系统参数配置)。
  • 支持前端 后端在线代码生成。
  • 文件,短信,缓存,邮件等,利用接口封装,方便拓展。
  • 短信默认使用阿里云sms,缓存默认使用内存缓存。

框架亮点及优势

  1. 模块化架构设计,层次清晰,业务层推荐写到单独模块,框架升级不影响业务。

模块树
├─xiaonuo ->项目工程
│ ├─xiaonuo-base ->框架基础模块
│ ├─xiaonuo-core ->核心模块
│ ├─xiaonuo-gen ->代码生成
│ ├─xiaonuo-system ->基础业务
│ ├─xiaonuo-main ->业务开始模块
│ ├─业务 ->您的业务</pre>

2、独创前端字典翻译

全部字典数据储存前端store,后端接口数据统一过滤器翻译

下拉框,多选框等取值只需1行代码:('dictData'为过滤器名称,'sex'为字典类型code)返回数组字典

this.$options.filters['dictData']('sex')或直接给值{{ code | dictData }}</pre>

列表数据中字典翻译:('code'为字典类型唯一code,'value'为待翻译的值)返回name

{{ code | dictType(value) }}</pre>

3、独创的数据权限范围机制

数据范围的分配也来自于给用户单独分配的数据范围,最终决定用户有几个公司的数据范围的是,用户拥有的角色的数据范围 用户直接分配的数据范围

若一个用户有多个角色,系统最终判定用户有哪些数据范围是以多个角色和用户数据范围的 并集 为准。

仅通过注解就可以获取当前用户的数据范围,不强制联查SQL可根据业务需求极其灵活的使用

">@DataScope</pre>

param类继承baseparam,使用param.getDadaScope即可获取到数据权限列表

>@EqualsAndHashCode(callSuper = true)@Datapublic class SysUserParam extends BaseParam {</pre>

4、独创的文件预览系统

支持txt.doc.docx.ppt.pptx.xls.xlsx.pdf.png.jpg.jpeg.bmp.gif等

预览速度快,兼容性好,支持常见文本格式.只需在运行环境一键安装libreoffice即可,运行简单,操作方便。

>#libreoffice文档在线预览配置# CentOS 下安装 libreoffice:# 安装:yum -y install libreoffice# Linux 中文字体乱码解决:# 1、上传 C:WindowsFonts 下的字体到 /usr/share/fonts/windows 目录# 2、执行命令:chmod 644 /usr/share/fonts/windows/* && fc-cache -fvjodconverter: local: #暂时关闭预览,启动时会有点慢 enabled: false #设置libreoffice主目录 linux地址如:/usr/lib64/libreoffice office-home: C:Program FilesLibreOffice #开启多个libreoffice进程,每个端口对应一个进程 port-numbers: 8100 #libreoffice进程重启前的最大进程数 max-tasks-per-process: 100</pre>

5、其他优势

前后端分离架构,分离开发,分离部署,前后端互不影响。

前端技术采用vue antdvPro axios。

后端采用spring boot mybatis-plus hutool等,开源可靠。

基于spring security(jwt) 用户UUID双重认证。

基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。

基于hibernate validator实现的校验框架,支持自定义校验注解。

提供Request-No的响应header快速定位线上异常问题。

在线用户可查,可在线踢人,同账号登录可同时在线,可单独在线(通过系统参数配置)。

支持前端 后端在线代码生成。

文件,短信,缓存,邮件等,利用接口封装,方便拓展。

短信默认使用阿里云sms,缓存默认使用内存缓存。

效果图

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

详细功能

  • 主控面板、控制台页面,可进行工作台,分析页,统计等功能的展示。
  • 用户管理、对企业用户和系统管理员用户的维护,可绑定用户职务,机构,角色,数据权限等。
  • 应用管理、通过应用来控制不同维度的菜单展示。
  • 机构管理、公司组织架构维护,支持多层级结构的树形结构。
  • 职位管理、用户职务管理,职务可作为用户的一个标签,职务目前没有和权限等其他功能挂钩。
  • 菜单管理、菜单目录,菜单,和按钮的维护是权限控制的基本单位。
  • 角色管理、角色绑定菜单后,可限制相关角色的人员登录系统的功能范围。角色也可以绑定数据授权范围。
  • 字典管理、系统内各种类型的维护。
  • 访问日志、用户的登录和退出日志的查看和管理。
  • 操作日志、用户操作业务的日志的查看和管理。
  • 服务监控、服务器的运行状态,java虚拟机信息,jvm等数据的查看。
  • 在线用户、当前系统在线用户的查看。
  • 数据监控、druid控制台功能,可查看sql的运行信息。
  • 公告的管理、系统的公告的管理。
  • 文件管理、文件的上传下载查看等操作,文件可使用本地存储,阿里云oss,腾讯cos接入,支持拓展。
  • 定时任务、定时任务的维护,通过cron表达式控制任务的执行频率。
  • 系统配置、系统运行的参数的维护,参数的配置与系统运行机制息息相关。
  • 邮件发送、发送邮件的功能。
  • 短信发送、短信发送功能,可使用阿里云sms,腾讯云sms,支持拓展。

小结

项目整体还是不错的,前后端分离,后端使用 SpringBoot MybatisPlus,前端使用 AntDesign-Vue-Pro Vue2.0 开发,是一款不可多得的前后端分离入门学习项目。

源码资料获取方式:关注小编 转发文章 私信【 0627】免费获取!!!!

图解MyBatis

本文主要内容:

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

Mybatis工作流程

Mybatis工作流程可以大致分为四个步骤:

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

下面我们就来说说这四个步骤:

加载配置并初始化

触发条件:加载配置文件,比如:全局配置文件、XxxMapper.xml配置文件等。

配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

接收调用请求

触发条件:调用Mybatis提供的API

传入参数:为SQL的ID和传入参数对象

处理过程:将请求传递给下层的请求处理层进

行处理。

处理操作请求 触发条件:API接口层传递请求过来

传入参数:为SQL的ID和传入参数对象

具体处理过程:  (A)根据SQL的ID查找对应的MappedStatement对象。

(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。

(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。

(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。

(E)释放连接资源。

返回处理结果

将最终的处理结果返回。

Mybatis大致流程:

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

Mybatis实现原理

Mybatis底层还是采用原生JDBC来对数据库进行操作的,只是通过 SqlSessionFactory,SqlS

ession Executor,StatementHandler,ParameterHandler,ResultHandler和TypeHandler等几个处理器封装了这些过程。

执行器:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) 参数处理器:ParameterHandler (getParameterObject, setParameters) 结构处理器

ResultSetHandler (handleResultSets, handleOutputParameters) sql查询处理器:StatementHandler (prepare, parameterize, batch, update, query)

其中StatementHandler用通过ParameterHandler与ResultHandler分别进行参数预编译 与结

果处理。而ParameterHandler与ResultHandler都使用TypeHandler进行映射。如下图:

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

MyBatis整体架构

Mybatis的功能架构分为三层:

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

每一层对应详细内容:

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

API接口层

首先接口层是我们打交道最多的层,核心对象就是SqlSession,它是上层应用和Mybatis打交道的桥梁,也有的人称之为大门,SqlSession中定义了非常多的对数据库操作的方法,接口层在接受到调用请求时,会调用核心处理层的相应模块来完成具体的数据库操作。。

数据处理层

这一层主要就是跟数据库操作相关的动作都是在这数据处理层完成的。

核心处理层主要做了这4件事:

  • 把接口中传入的参数解析并映射成JDBC类型;
  • 解析xml文件中的SQL语句,包括插入参数和动态SQL的生成;
  • 执行SQL语句;
  • 处理结果集,并映射成Java对象。

插件也属于核心层,这是由它的工作方式和拦截的对象决定的。

基础支撑层

负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

MyBatis的主要成员

Configuration

MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中。

SqlSession

作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能。

Executor

MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护。

StatementHandler

封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等。

ParameterHandler

负责对用户传递的参数转换成JDBC Statement 所对应的数据类型。

ResultSetHandler

负责将JDBC返回的ResultSet结果集对象转换成List类型的集合。

TypeHandler

负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换。

MappedStatement

MappedStatement维护一条<select|update|delete|insert>节点的封装。

SqlSource

负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回

BoundSql

表示动态生成的SQL语句以及相应的参数信息。

Mybatis层次结构

推荐一款入门级,SpringBoot+ Mybatis 前后端分离后台管理系统项目(springboot前后端分离项目实战)

源码资料获取方式:关注小编 转发文章 私信【 0627】免费获取!!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年7月20日 上午8:04
下一篇 2022年7月20日 上午8:06

相关推荐