SSM功能模块开发
前言
在学习SSM中,产生了对表现层中Controller层的编写理解以及服务层Service层的编写理解和持久层功能与编写的理解
例如:在controller中主要是写接口,实现某一功能,完成某一操作,在这一层它也接受前端变现层所发来的数据,并响应数据,所以,这一层也应该包含对前端数据的处理和对服务层操作的判断.
从唯物主义与人本主义角度来看,一切的诞生应该是为人所用,因此,我更偏向于从业务的基础入手,也就是当前端发出一个需求,后端如何一步步处理,例如在一个学生管理系统中,我们现在要实现一个<<根据姓名分页查询学生>>:
一、表现层(controller(接口))
1.接受前端的请求数据并作出判断
前端传来三个参数
这里我们首先接受数据,然后思考我们需要调用一个怎样的服务呢?很明显是分页查询:
2.调用服务层完成功能
如图所示,我们首先对前端的数据进行处理,封装为一个page对象,然后通过把这个page对象作为参数,调用一个page分页查询的服务.
3.对调用结果进行判断,决定返回给前端的数据
二、服务层(service(服务))
1.对controller层传来的判断过的数据进行使用,完成一些服务,例如CRUD
这里对传来的page对象和封装器对象进行使用,完成页面查询服务.
2.对持久层进行调用
同时对持久层mapper映射文件进行调用.
三、持久层(mapper(映射)+entity(实体))
1.定义mapper,可以是一个表的映射,一个功能的映射,将上层的调用操作实质性应用到数据库中
这里使用mybatisplus,省略了一些繁琐的crud操作.
这里当我们需要查询多个表时,我们的mapper文件便不是只映射一个实体类,所以,我们便可定义一个功能的mapper,用来映射多个实体类.例如L:
2.其次,定义需要的实体类,用到哪个表就定义哪个表的实体类
查询学生页面,是查询学生表,所以首先我们定义需要的学生表实体对象,此时如果时多个表,我们需要通过定义一个实体类来包含两个数据表的信息,具体情况,具体分析,有时也需要定义并不是任何表的信息,主要从mapper需要的层面来考虑实体类的需求.
总结
一个controller可能会有多个service(可能是一个表的多个service,也可能是一个服务对应多个表的service),
因此一个service又不仅仅是一个mapper,也可能是多个表操作的mapper,即使是一个表的mapper,一个服务也可能含有多个不同的操作,也就是多个不同的mapper.
由此,三个层的作用便区分出来了.