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

基于springboot+mybatis-plus的线上订餐系统项目

想获取源码请前往本文结尾处或私信我

一、技术栈:

前端:html+css+js+JQuery+BootStrap(做样式)+Axios(发送请求)

后端:SpringBoot+Mybatis+Mybatis-plus+Spring MVC+Maven

数据库:Mysql

二、项目架构:

这里我主要介绍后端

controller:表现层,定义控制类,负责与用户进行交互,接受用户请求,并调用业务逻辑层(service)的方法处理请求,然后将结果返回给用户。

service:业务逻辑层,定义服务类,负责处理业务逻辑,接受controller层传来的请求,进行业务逻辑的处理和计算,并调用数据访问层(mapper)方法来完成具体业务。

mapper:数据访问层,定义数据访问接口,使用Mybatis和Mybatis-plus框架实现数据库访问层,与数据库进行交互,执行数据库的增删改查(crud)操作。将service层传来的请求转换为数据库操作,并将数据库的结果返回给service层。

pojo:实体层,用于数据库中的实体对象,与数据库中的表相对应,每个实体类都包含表中字段对应的属性,以及setter和getter方法。使用注解和XML配置来映射实体类与数据库之间的关系。

utils:工具层

三、部分代码解析

我以用户登录注册为例

定义AccountController、AccountMapper、User(pojo层)、AccountService、AccountServiceImpl

1.AccountController

@Controller注解将其标记为一个控制器,它会被Spring容器管理

@Autowired注解自动注入实例,这样可以在控制器中调用service层的方法进行业务逻辑处理。

@RequestMapping("toLogin")注解表示当用户访问/toLogin路径时会调用toLogin方法。

该方法返回一个字符串"index",表示跳转到名为index的视图页面,用于显示登录界面。

@RequestMapping("/register")注解表示处理/register路径的请求。

前端路径。

该方法接受userName、userPwd、confirmPwd三个参数,要与前端对应,通过Model向视图传递数据。

首先检查两次输入密码是否一致,如果不一致,使用model.addAttribute向视图添加错误信息,并返回register视图。

若密码一致,创建Customer对象,使用md5将密码加密,然后调用sercice层的save方法保存用户信息,最后跳转到index。

处理/login路径请求。

首先判断 用户名是否为admin,若是则说明是管理员,则调用accountService.login方法进行登录验证,若验证成功,使用QueryWrapper查找用户信息,将用户信息存储在session中,然后跳转到foodMainMenu管理员页面;若失败,添加错误消息并返回index页面。

若用户名不是,则说明是普通用户,则调用customerService.login方法进行登录验证,若验证成功,则使用QueryWrapper查找用户信息,存储在session中,然后跳转到foodMainMenu1普通用户界面,若查找失败就添加错误信息并返回index界面。

处理pwdUser路径的POST请求。

这是登录成功以后的操作。登录时我们已经将当前用户存入session。

首先从session中取出当前用户的用户名,调用service层的login方法进行用户验证。

若成功,创建新的User对象,对新密码进行加密,使用QueryWrapper构建更新条件,调用service层的update方法更新密码。若更新成功返回index界面重新登录,否则添加错误信息。

若失败,返回modify界面。

总的来说,该控制器类主要负责处理用户的登录、注册、修改密码、个人信息修改等操作,根据不同的请求路径,调用相应的服务进行业务逻辑处理,并将处理结果或错误信息传递给视图,同时使用 session 存储用户信息。

2.AccountMapper

@Repository:这是Spring框架中的一个注解,它将该接口标记为一个存储库组件。Spring会将该接口作为Bean进行管理,使得该接口可以被自动注入到其他Spring管理的组件中,例如service。该注解的主要作用是将数据访问层的接口标识出来。

extends BaseMapper<User>:

BaseMapper是Mybatis-plus提供的一个基础接口,它包含了许多数据库操作方法,无需手写这些方法的实现代码。

User是一个实体类,代表数据库的一张表,表示接口是对User表进行操作,在Mybatis-plus中会根据User类的属性和注解来自动生成相应的SQL语句,进行数据库操作。

3.AccountService

定义了一个公共的服务接口,通常位于服务层(Service Layer),主要负责业务逻辑的处理。

Iservice是MP框架提供的一个服务接口,包含许多常用的业务逻辑操作方法,例如save、remove、update等,并且这些方法会自动调用相应的mapper接口中方法。

  • 自定义的业务逻辑方法,用于处理用户登录功能。
  • 接收两个参数:userName 和 userPwd,它们的名称被特意指定要与前端传递过来的参数名称保持一致,以便在控制器(Controller)层调用该服务接口时可以方便地将前端的请求参数传递给该方法。
  • 该方法的返回值是 boolean 类型,通常情况下,如果登录成功,该方法将返回 true,如果登录失败,将返回 false。在具体的实现类中,会编写逻辑来验证用户名和密码是否匹配,可能会调用数据访问层(如 AccountMapper)的方法来查询数据库中的用户信息,并与传入的用户名和密码进行比较。

注意!!!

Mybatis-Plus 框架只能提供一些简单的数据库操作,复杂操作需要我们动手完成,在该项目中,将 MyBatis 映射文件放在recources下面,并且路径要和mapper层一致。

都是org.example.food.mapper

  • 该 MyBatis 映射文件包含了多个 SQL 语句,涵盖了查询、更新操作,使用结果映射将数据库结果集正确地映射到 Java 对象上,同时使用动态 SQL 元素(如 <if>)添加动态的查询条件,以适应不同的业务需求。它将数据库操作和 Java 代码解耦,方便在不同的业务逻辑中调用这些 SQL 语句,提高了代码的可维护性和可读性。

最后是源码路径

gitee:https://gitee.com/yang-yaoning/ordering-system

希望大家能用宝贵的手点个赞o


http://www.kler.cn/a/506259.html

相关文章:

  • FLASK创建下载
  • 小米vela系统(基于开源nuttx内核)——openvela开源项目
  • MySQL-索引
  • java根据模板导出word,并在word中插入echarts相关统计图片以及表格
  • JAVA:在IDEA引入本地jar包的方法(不读取maven目录jar包)
  • Qt/C++进程间通信:QSharedMemory 使用详解(附演示Demo)
  • ubuntu开机自启,其他方式
  • 二、学习SpringMVC
  • 微软徽标认证WHQL
  • thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案
  • Nvidia Blackwell架构深度剖析:深入了解RTX 50系列GPU的升级
  • leetcode118.杨辉三角
  • C++实现设计模式---外观模式 (Facade)
  • RK3399开发板Linux实时性改造
  • STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态
  • stm32步进电机曲线控制程序
  • 【2025 Rust学习 --- 18 IO操作和网络】
  • 基于unity的多人家装应用的设计与实现
  • 【Python】-- 趣味代码 - 发牌游戏
  • 【Web】Web API 简介
  • Portainer CE本地化部署与远程可视化管理Docker容器实战指南
  • [Qt] 系统相关_1 | 常见事件 | 事件分发器 | 过滤器
  • 【Apache Paimon】-- 源码解读之 PaimonSparkSessionExtensions
  • 高阶数据结构之跳表
  • 【NLP高频面题 - 高效微调篇】LoRA微调时有哪些可配置的参数?
  • vscode——如何让标点总是成对出现