SSM框架中 entity层,mapper层,service层,controller层等作用

这几天在学习 SSM 框架,对于几个文件夹中应该存放什么类,这些类有什么功能,还是有些迷糊。

通过网上资料现在大致已经了解了。记下来以后有了新的理解再加上去。

 

一、SSM

SSM 是 Spring + SpringMVC + Mybatis集成的框架。

Spring
  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
  Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。


SpringMVC
  SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。


Mybatis
  mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
 

  首先来说一下业务逻辑:

        Controller-->service接口-->serviceImpl-->dao接口-->daoImpl-->mapper-->db

面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。Dao层设计与设计的数据库表和实现类(对应的Entity或者JavaBean)一一对应,Entity类和java对象,与数据库表一一对应,是其对应的实现类。即一个Entity就是对应表中的一条记录。View层与Controller层结合紧密,需要二者结合协同开发。Service层、Dao层和其他层次耦合很低,完全可以单独开发。

 

二、各层对比

1、model层:模型

同类: model层 = entity层 = domain层

作用: 用于存放我们的实体类,与数据库中的属性值基本保持一致。

解释:模型通常认为是视图(view)的内核,模型就是指视图的数据。

 

2、Dao层 (Data Access Object):数据存储对象

同类: dao层 = mapper层

作用: 对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的。

解释:不管是什么框架,我们很多时候都会与数据库进行交互。如果遇到一个场景我们都要去写SQL语句,那么我们的代码就会很冗余。所以,我们就想到了把数据库封装一下,让我们的数据库的交道看起来像和一个对象打交道,这个对象通常就是DAO。当我们操作这个对象的时候,这个对象会自动产生SQL语句来和数据库进行交互,我们就只需要使用DAO就行了。

 

3、service层:服务

同类: 只有一个 service层

作用: service层 是针对 controller层的 controller,也就是针对我们使用者。service的 impl 是把mapper和service进行整合的文件。

解释:服务是一个相对独立的功能模块,主要负责业务逻辑应用设计。首先也要设计接口,然后再设计其实现该接口的类。这样我们就可以在应用中调用service接口进行业务处理。service层业务实现,具体调用到已经定义的DAO的接口,封装service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性 。

 

4、controller层:控制器

同类: controller层 = web 层

作用: 控制器,导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,再将处理结果返回到前端。

解释:主要负责具体业务模块流程的控制,会调用Service层的接口来控制业务逻辑。

 

三、标签

此外,还需注意各种标签。

Spring中的几个标签@Component(声明一个类是Spring容器管理的类,可以细分为后面提到的三个标签)、@Controller(控制层)、@Service(服务层)、@Repository(持久层)。标签的作用是让Spring根据名字关联到这个类。

@Autowired 标签默认以 byType 的形式注入,使用这个标签是不需要 getter 和 setter 方法的。(这次代码中因为用户名密码校验部分要用到get方法所以写上了)

可以配合@Qualifier 标签根据 bean 的 id 来装配。

 


以上涉及到的原文链接:

https://www.cnblogs.com/zhzJAVA11/p/9996999.html

https://blog.csdn.net/xsj_blog/article/details/83008883

https://blog.csdn.net/Phoenix_tgd/article/details/79677098

  • 19
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值