不要把所有代码写在同一个类里,要遵循单一原则,一个类只干一件事
文章目录
- 后端各层级之间关系
-
- [一、Model 数据库实体层](#一、Model 数据库实体层)
- [二、Controller 业务控制层](#二、Controller 业务控制层)
- [三、Service 业务逻辑层/服务层](#三、Service 业务逻辑层/服务层)
- [四、Dao 数据库持久化层](#四、Dao 数据库持久化层)
- [五、View 视图](#五、View 视图)
- 扩展
- 实体类中快速添加自动生成方法
-
- Eclipse中快速添加构造方法
- Eclipse中快速添加Getter、Setter方法
- [Eclipse中快速添加to String方法](#Eclipse中快速添加to String方法)
- IDEA中快速添加构造方法
- IDEA中快速添加Getter、Setter方法
- [IDEA中快速添加to String方法](#IDEA中快速添加to String方法)
后端各层级之间关系
提示:这里可以添加本文要记录的大概内容:
图很重要

先用更通俗易懂的方式来解释controller(控制器)、service(服务层)、mapper(数据访问层)以及实体层之间的关系。
想象一下你去一家餐厅吃饭的情景:
-
Controller(控制器):
- 相当于餐厅的服务员。服务员负责接收顾客的订单(比如你要点什么菜),然后将这些信息传递给厨师(相当于服务层),同时也负责将做好的菜肴送回到顾客的餐桌上。在软件开发中,
controller主要负责接收用户的请求,并将这些请求转发给合适的业务逻辑处理层(service层)。
- 相当于餐厅的服务员。服务员负责接收顾客的订单(比如你要点什么菜),然后将这些信息传递给厨师(相当于服务层),同时也负责将做好的菜肴送回到顾客的餐桌上。在软件开发中,
-
Service(服务层):
- 相当于餐厅的厨师。厨师负责根据服务员带来的订单制作菜品。在软件开发中,
service层负责处理具体的业务逻辑,比如计算价格、处理复杂的业务流程等。service层会与数据库进行交互,但它不直接操作数据库,而是通过mapper层来进行。
- 相当于餐厅的厨师。厨师负责根据服务员带来的订单制作菜品。在软件开发中,
-
Mapper(数据访问层):
- 相当于餐厅的厨房里专门负责烹饪的工作人员。这些工作人员根据厨师的要求,具体操作炉灶、冰箱等设备来完成菜品的制作。在软件开发中,
mapper层负责与数据库进行交互,执行SQL语句,获取或更新数据。mapper通常与数据库表紧密对应,负责将Java对象转换为数据库中的记录,或将数据库中的记录转换为Java对象。
- 相当于餐厅的厨房里专门负责烹饪的工作人员。这些工作人员根据厨师的要求,具体操作炉灶、冰箱等设备来完成菜品的制作。在软件开发中,
-
实体层(Entity Layer):
- 相当于餐厅的食材。食材是构成菜品的基础。在软件开发中,实体层是指那些用来表示业务领域概念的对象,比如用户、订单等。实体层定义了数据的基本结构和属性,是系统中数据的抽象表示形式。
总结来说:
Controller接收用户的请求,并将请求转发给Service层处理。Service层处理业务逻辑,并通过Mapper层与数据库进行交互。Mapper层负责执行SQL语句,与数据库打交道,获取或更新数据。- 实体层定义了数据的基本结构,是系统中数据的抽象表示。
整个流程就像一个餐厅的工作流程一样:顾客(前端用户)下单(发送请求),服务员(Controller)将订单交给厨师(Service),厨师准备食材(从数据库获取数据),并让厨房工作人员(Mapper)烹饪菜品(执行数据库操作),最后将菜品送到顾客手中(返回响应给前端用户)。
一、Model 数据库实体层
model层也就是数据库实体层,也被称为entity层,Bean,pojo 或 po
一般数据库一张表对应一个实体类,类属性同表字段 一 一对应。
Model层是被封装起来的,Service层和DAO层只负责访问和操作Model层,不直接与Model层交互。
Model层也可以包括其他的数据模型、数据库或文件系统等,以完成业务数据的存储、访问和操作。
model层就像是蛋糕的原材料,比如鸡蛋、面粉、糖、牛奶等等。
是用来描述数据的,定义了数据的属性和行为
比如一个User对象就可以包含用户名、密码、邮箱等属性,也可以拥有登录、注册等行为。


实体层中一般会自动生成Getter、Setter、to String方法和构造方法
具体怎么生成放在了文章下面
二、Controller 业务控制层
controller层的功能为请求和响应控制。它不允许直接操作数据库
主要负责接收前端用户请求,并将请求转发给相应的Service层进行处理,处理Service层返回的结果,并将结果响应给前端。
Controller层调用Service层,Service层调用DAO层,DAO层负责操作Model层,从而完成整个系统的业务与处理、数据访问等功能
Controller层也可对客户端提交的数据进行验证和校验,保证数据的合法性和正确性。
controller层是用来处理用户请求的,通过它来控制和协调整个应用程序的运行流程,接受用户输入,调用相应的service层来处理业务逻辑,并将处理结果返回给客户端。
比如可以通过UserController来处理和控制用户请求,实现用户登录、注册、修改信息等操作。
三、Service 业务逻辑层/服务层
所有的内部的业务逻辑都会放在这里处理
Service层是整个系统的业务逻辑处理中心,负责对业务数据进行处理和计算,并将处理结果返回给Controller层。
此外,Service层也需要调用DAO层对数据进行访问和操作,以完成业务逻辑处理。
通过规范对dao层提供的功能进行封装和组装,实现更加复杂的操作,比如可以实现对用户进行注册、登录、修改信息等业务操作。
四、Dao 数据库持久化层
dao层也被称为mapper层,全称是DataAccessObject数据访问对象
DAO层是用来访问数据库的,负责执行数据访问和操作,包括对数据库的访问和操作、文件系统的存取等,就是和数据库打交道的,与数据库进行联络的一些任务都封装在此,向数据库发送 SQL语句,可以实现对数据库的增删改查操作
为Service层提供数据访问的支持和服务。并隐藏了数据访问的细节,并提供了一组简单易用的接口,方便Service层调用和使用。
DAO设计的总体规划需要和设计的表,dao类一般也是和数据库中的表对应,采用驼峰式命名:表名+Dao
五、View 视图
运行时展示界面,给系统的用户查看,也就是前端
视图类要展示输出语句
获得输入数据
它可以返回HTML页面、JSON等数据格式,处理表单数据,进行一些计算或数据库查询操作等等
扩展
一般的,一个Controller对应一个Service,一个Service对应一个Dao,一个Dao对应一个数据库表,
当然根据项目或业务复杂程度,一个Controller可以调用多个Service,而一个Service也可以调用多个Dao,但是Controller层不允许互调,Service层也不允许互调,
就是AController不能直接调用BController
AService也不能直接去调用BService,遵循高内聚低耦合原则
本篇文章部分内容借鉴了其他博主的文章,但我忘了哪篇文章了,在此十分感谢那篇原创文章的博主
实体类中快速添加自动生成方法
新建实体类后要有四个步骤:
1、手写私有属性,与表中列对应
2、自动生成两个构造方法
3、自动生成Getter、Setter方法
4、自动生成重写toString方法
Eclipse中快速添加构造方法
有参和无参构造方法

Eclipse中快速添加Getter、Setter方法
Eclipse中快速添加to String方法

IDEA中快速添加构造方法
此处借用网上经典动图展示:

IDEA中快速添加Getter、Setter方法
此处借用网上经典动图展示:

IDEA中快速添加to String方法


