springboot+mybatis plus学习记录+三层架构理解

三层架构

三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。(百度定义)

这样看起来晦涩难懂,让我们来用一个例子来“白话一下”三层架构。

表示层(UI):用于展示或者收集数据,就好比我们登录一个管理系统时展示给我们自己看的“页面”,或者是系统中查询结果返回在页面上的部分。

业务逻辑层(BLL):用于处理业务逻辑,比如判断该用户是否已经登录或者已经注册,再或者是查询管理系统中为男性的人数等等

数据访问层(DAL):用于与数据库进行交互,比如从数据库中拿到表的所有数据,注意仅仅只是数据,并没有什么逻辑处理。

这样一看大家都能明白为什么要分三层架构了吧,就好比把做饭这一个功能块拆分开来,有的人负责洗菜,有的人负责炒菜,有的人负责最后收拾厨房。各自分工,每个板块耦合性就没有那么强。

架构呈现

springboot+mybatis plus学习记录+三层架构理解_第1张图片
dao-------数据访问层 controllers--------展示层 services-----------业务逻辑层

pojo------数据库中的表对应的实体类 common----------公共工具类

注解解释

@TableName
用法:映射数据库的表名,通俗来说就是将pojo类与数据库对应的表进行绑定
在这里插入图片描述

@TableId
用法:表示该字段为表的主键字段
在这里插入图片描述
@Service
用法:用于在类之前注解,表示该类是一个service类,通俗来说就是把该类交由spring进行管理,在要使用时,直接通过其他注解直接由spring进行实例化springboot+mybatis plus学习记录+三层架构理解_第2张图片
@AutoWired
用法:表示在该处注入实例,通俗理解为由spring进行对象的实例化,通常与以上的@Service和@Repository连用。
在这里插入图片描述
@Repository(写于dao层)
用法:同样和上面的注解一样,该注解表示被标注类交由spring进行管理,在使用时通过其他注解直接注入。而该注解与@Service不同点在于应用层不同,@Service用于业务逻辑层,而@Repository用于存储层
springboot+mybatis plus学习记录+三层架构理解_第3张图片
@RestController(用于返回json数据到页面)
springboot+mybatis plus学习记录+三层架构理解_第4张图片

@RequestMapping(“/sys/role”) 相当于servelt的注解配置路径

@Controller和@RestController的区别:
@Controller:在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面

若返回json等内容到页面,则需要加@ResponseBody注解

@RestController:相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

你可能感兴趣的:(spring,mybits,mybatis,spring,boot,学习)