[ SSM ] 浅谈 SSM 框架(Spring+SpringMVC+MyBatis)

简介: SSM ? 陌生吗 ?我敢说来看这篇文章的你肯定不陌生~~~哈哈哈哈关于 SSM,我第一次接触应该是在大四,毕业论文开题报告之前的几天,我改题的时候。当时由于准备实习的一些事,没有太多时间去完成论文的研究,接受导师的建议于是改成了毕设,选定的就是 SSM 框架。那么这篇文章呢,我想分享一下有关 SSM 框架的一些知识。

一、什么是 SSM ?



1. 概述


SSM:Spring+SpringMVC+MyBatis

SSM 框架集是由 Spring、MyBatis 两个开源框架整合而成。

SpringMVC 是 Spring 中的部分内容,常作为数据源较简单的 web 项目的框架。


2. 什么是 Spring(spring)


Spring 框架是一个开放源代码的 J2EE 应用程序框架,由 Rod Johnson 发起,是针对 bean 的生命周期进行管理的轻量级容器。


Spring 解决了开发者在 J2EE 开发中遇到的许多常见的问题,提供了功能强大IOC、AOP 及 Web MVC 等功能。


Spring 可以单独应用于构筑应用程序,也可以和 Struts、Webwork、Tapestry 等众多Web框架组合使用,并且可以与 Swing 等桌面应用程序 AP 组合。


因此,Spring 不仅仅能应用于 J2EE 应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框 架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web 和 Spring Web MVC。

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。


Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。


3. 什么是 Spring MVC(spring MVC)


Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。


Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。


使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用 Spring 的Spring MVC 框架或集成其他MVC开发框架,如 Struts1(现在一般不用),Struts 2(一般老项目使用)等等。


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


SpringMVC相当于SSH框架中struts。


4. 什么是 mybatis(mybatis)


MyBatis 本是 apache 的一个开源项目 iBatis, 2010年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。


iBATIS 一词来源于 "internet" 和 "abatis" 的组合,是一个基于 Java 的持久层框架。

iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAOs)。

mybatis 是对 jdbc 的封装,它让数据库底层操作变的透明。


mybatis 的操作都是围绕一个 sqlSessionFactory 实例展开的。


mybatis 通过配置文件关联到各实体类的 Mapper 文件,Mapper  文件中配置了每个类对数据库所需进行的 sql 语句映射。在每次与数据库交互时,通过 sqlSessionFactory 拿到一个sqlSession,再执行 sql 命令。


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


二、SSM 的作用和原理



1. 作用


SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层。


使用spring MVC负责请求的转发和视图管理。


spring实现业务对象管理,mybatis作为数据对象的持久化引擎。


2. 原理


1. Spring MVC:

1.客户端发送请求到 DispacherServlet(分发器)

2.由 DispacherServlet 控制器查询 HanderMapping,找到处理请求的 Controller。

3.Controller 调用业务逻辑处理后,返回 ModelAndView。

4.DispacherSerclet 查询视图解析器,找到 ModelAndView 指定的视图

5.视图负责将结果显示到客户端

image.png


2. Spring

我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们Java中的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。


另外spring的aop,事务管理等等都是我们经常用到的。


3. Mybatis

mybatis 是对 jdbc 的封装,它让数据库底层操作变的透明。mybatis 的操作都是围绕一个sqlSessionFactory 实例展开的。


mybatis 通过配置文件关联到各实体类的 Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的 sql 语句映射。


在每次与数据库交互时,通过 sqlSessionFactory 拿到一个 sqlSession,再执行sql命令。


三. Java中层次介绍



1. 持久层:DAO层(mapper)


DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。


DAO层的设计首先是设计DAO的接口。


然后在Spring的配置文件中定义此接口的实现类。


然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰。


DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。


2. 业务层:Service层


Service层:Service层主要负责业务模块的逻辑应用设计。


首先设计接口,再设计其实现的类。


接着再在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。


Service层的业务实现,具体要调用到已定义的DAO层的接口。


封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。


3. 表现层:Controller层


Controller层;Controller层负责具体的业务模块流程的控制。

在此层里面要调用Service层的接口来控制业务流程。

控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。


4. View层


View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。

View层主要负责前台jsp页面的表示。


5. 各层联系


DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势。


Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。


Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。


四、SSM 系统架构图



SSM 处理用户请求的整个过程

image.png

相关文章
|
6天前
|
SQL JavaScript Java
Spring Boot 3 整合 Mybatis-Plus 实现数据权限控制
本文介绍了如何在Spring Boot 3中整合MyBatis-Plus实现数据权限控制,通过使用MyBatis-Plus提供的`DataPermissionInterceptor`插件,在不破坏原有代码结构的基础上实现了细粒度的数据访问控制。文中详细描述了自定义注解`DataScope`的使用方法、`DataPermissionHandler`的具体实现逻辑,以及根据用户的不同角色和部门动态添加SQL片段来限制查询结果。此外,还展示了基于Spring Boot 3和Vue 3构建的前后端分离快速开发框架的实际应用案例,包括项目的核心功能模块如用户管理、角色管理等,并提供Gitee上的开源仓库
57 11
|
1月前
|
缓存 Java 数据库连接
深入探讨:Spring与MyBatis中的连接池与缓存机制
Spring 与 MyBatis 提供了强大的连接池和缓存机制,通过合理配置和使用这些机制,可以显著提升应用的性能和可扩展性。连接池通过复用数据库连接减少了连接创建和销毁的开销,而 MyBatis 的一级缓存和二级缓存则通过缓存查询结果减少了数据库访问次数。在实际应用中,结合具体的业务需求和系统架构,优化连接池和缓存的配置,是提升系统性能的重要手段。
83 4
|
1月前
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
91 3
|
2月前
|
Java 数据库连接 数据库
spring和Mybatis的逆向工程
通过本文的介绍,我们了解了如何使用Spring和MyBatis进行逆向工程,包括环境配置、MyBatis Generator配置、Spring和MyBatis整合以及业务逻辑的编写。逆向工程极大地提高了开发效率,减少了重复劳动,保证了代码的一致性和可维护性。希望这篇文章能帮助你在项目中高效地使用Spring和MyBatis。
45 1
|
3月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
428 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
3月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
171 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
105 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
3月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
738 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
3月前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
50 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
3月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
238 1