Controller:处理请求映射
Service层:系统的业务逻辑
DAO层(也叫Mapper层):直接操作数据库的代码(mybaitis是DAO层框架)
为了更好的降低各层之间的 耦合度(系统的复杂度,采用面向抽象变成。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间解耦合
对于登陆,注册功能。我们使用了三层架构:而mybaitis是在DAO层实现,mybaitis是DAO(Mapper)层框架。
目前我能确定三层架构和MVC架构看着很相似,但是是有区别的。三层架构是纯粹一层层向下直接调用。各层分工。
三层架构,dao层用的是mybatis(持久层框架)的例子:
yml配置文件:
Bean/douyinman是entity实体类,与数据库表中的数据项一致:
数据库:
Mapper层(也叫dao层):dao(mapper)层 DAO层叫数据访问层,全称为data access object,持久层直接和数据库打交道,mapper和dao都是数据层进行crud的实现方式(Dao还有层持久层的意思),它们的本质感觉就是对jdbc进行了一层封装,屏蔽了底层的加载数据库驱动的重复的操作,让我们把更多的时间用在关注写和实现
我们使用的是xml版的mybaits操作,如下是mybatis-config.xml
的操作,这里实现了Mapper层的是具体操作。具体通过mybaitis的自动代理实现
Service层(业务层):
service层负责整合mapper层供外部调用。
Service层的业务实现,具体要调用到已定义的mapper层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。如果没有service层,代码全聚到一起维护和调试起来会比较麻烦。
Service层接口:
Sercive实现类:
Controller层:
Controller层,控制层,用于控制逻辑,其最核心的作用在于控制后端与前端的交互。
其实前端与后端的交互,大部分情况下,还是通过交换json数据来进行交互的, 两者的交互核心还是在浏览器中进行,前端给你一个请求,后端返回一个数据去响应这个请求,前端再根据后端这个回应去做出相对应的反应,这也就是最基础的前后端的交互,
为什么要分3层架构呢?
方便团队分工,一个程序员单独完成一个软件产品不是不可以,但遇到大型软件需要团队配合的时候问题就来了,由于每个程序员风格不一样,而开发软件大量的代码风格不统一就会造成后期调试和维护出现问题,然而软件分层后,每个层合理分工这样的问题便迎刃而解。规范代码,在开发软件时对每个层的代码进行规范,固定开发语言的风格。忽略数据库差异,当软件系统要换数据库时,只要将数据访问层的代码修改就好了。实现”高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。