基本概念
DAO层:
DAO层叫数据访问层,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作。
Service层:
Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务。业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。
Controler层:
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。
controller层主要调用Service层里面的接口来控制具体的业务流程,控制层的配置也要在配置文件中进行。
Service与Controler的区别:
Controller和Service的区别是:Controller负责具体流程的控制;Service层负责业务模块的设计。
总结:
Dao是底层,可以借助数据表实现增删改查的功能。然后service层可以将一个或多个dao层封装成为一个服务,controller层转发,接受页面传的参数,由service处理检查数据的合理性,controller接到返回值传给页面。
举个例子:假如有一个客人(页面),那么他点的菜可以通过服务员(controller)传给厨师长(service),厨师长在传给做菜的师傅1(dao1)、师傅2(dao2)等等,这些师傅知道做菜用什么材料等,这就是dao层,负责最基础的操作,dao层负责完成service的任务
设计做法
dao层:接口实现层(底层),与mybatis有紧密的联系。一般实现对数据内容的增删改查。
设计思路: 1.设计dao层接口
2.在Spring的配置文件中定义此接口的实现类
3.在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪一个
public interface StudentDao extend BaseDao<Student>{
Student queryByName(String name);
}
service层:dao层的上层,指在完成业务模块的逻辑功能.service接口来进行业务处理,service层的业务层具体要调用已经定义的dao层接口,封装serivce层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。
设计思路: 1.设计接口
2.设计其实现类
3.在Spring的配置文件中配置其实现类的关联
public interface StudentService extend BaseService<Student>{
Student queryByName(String name)
}
controller层:负责具体的业务模块逻辑控制.针对具体的业务逻辑,会有具体的控制.通过调用service层来控制业务具体流程.设计出多个可利用的子单元模块.
@ResponseBody
@RequestMapping(value = "/queryStudents" ,method = RequestMethod.GET)
public AjaxRes queryStudent(Student student, int pageSize,int pageNum){
if(!StringUtils.isEmpty(student.getCode())){
student.setName(student.getCode());
}
PageInfo<Student> studentList=(PageInfo<Student>) studentService.queryByPage(student,pageNum,pageSize);
return AjaxResUtil.genSuccess(studentList,"${search}${successed}");
}
功能
(1)各层简介
Dao层(mapper层)
service层(业务层)
controller层(控制层)
Dao层
即数据持久层,对数据做持久化操作。也被称为mapper层。声明为接口。
dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
Service层
业务层,service层的作用为完成功能设计。存放业务逻辑处理,不直接对数据库进行操作,有接口和接口实现类,提供controller层调用的方法。
调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计。(也就是说对于项目中的功能的需求就是在这里完成的)(对Dao层接口的实现)
Controller层
控制器层,controller层的功能为请求和响应控制。
controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。
各层理解
通俗的讲 : Controller层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称Dao层)我需要什么样的半成品,副厨们(Dao层)就负责完成厨师长(Service)交代的任务。
如果一个厨师既负责跑堂,又负责烹饪。那这个饭店的管理一定非常混乱吧。小工就是DAO,从食材库里(数据源)取出食材(原始数据),进行简单处理(数据对象化)。厨师就是Service,找到小工(DAO),获取各种半成品(对象化数据),加工成顾客需要的菜肴(最终数据)。跑堂就是Controller,负责接单(提交数据)上菜(响应数据),是顾客与后厨间的媒介(提供用户与后台程序的接口)。各司其职(高内聚),轻松协作(低耦合),就是分层思想的目标。