基于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