SSM中(Spring-SpringMVC-Mybatis)(一:概念)
一:Spring:
参照我的另一篇博客: http://www.cnblogs.com/GH0522/p/8127530.html
二:SpringMVC:
流程图:
SpringMVC接口解释
DispatcherServlet:
Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
能够完成客户请求到Controller映射。
需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。
Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。
Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。
SpringMVC运行原理
- 客户端请求提交到DispatcherServlet
- 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
- DispatcherServlet将请求提交到Controller
- Controller调用业务逻辑处理后,返回ModelAndView
- DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
- 视图负责将结果显示到客户端
- 截获符合特定格式的URL请求。
- 初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
- 初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
三:mybatis
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
1:使用连接池,datasource,在驱动并连接的这个过程中优化并解耦
JDBC第一步其实从效率角度来看是不合适的,因为无论什么数据库都不可能支撑随机和庞大的连接数,而且不可避免的存在连接浪费的情况,Mybatis就封装了这些优化的方法。
2:统一sql存取到XML
如果代码写在java块中,在团队合作中很可能出现两个交叉业务的代码使用类似的sql语句,而开发人员的工作本身没有交集,那就代表sql语句肯定是无法复用的。而且对sql的修改,就代表着对java文件的修改,需要重新编译和打包部署(比如常见的状态值更改,sql修改随着业务变化必然存在修改)。
mybatis将sql统一存取到xml中,就算存在业务交叉,但因为统一配置的缘故,sql在xml中一目了然,两个跨team的程序员可以看到对方的sql,来判断自己是否需要重用。并且使用xml配置可以减少代码编译。
还有就是在java中拼写长sql太恶心了。
3:参数和结果集映射
sql的方式需要传入参数,如果存在多条件“或类型”的查询(列表查询的查询条件允许空),那就代表你必须传参进行sql拼接,就算使用xml的方式也不行。要么每个业务独立配置xml中的sql,要么还是写入java代码中,或者以工具的方式进行自动拼接。
Mybatis使用映射的方式,方便model管理参数,同时以解析器的方式将参数动态拼接到sql(sqlmaper里那些标签),由于是model映射,连查询结果都可以统一映射,方便取出和运算。而且mybatis对查询结果集进行了缓存处理,使得重复查询进一步进行了优化。
4:对多重复sql进行复用封装
比如模板方法,将常用sql模块化,直接调用。比如通用的save和getID之类的,只有表名和字段名有变化。
欢迎大家一起说出自己的想法。
SSM中(Spring-SpringMVC-Mybatis)(一:概念)相关推荐
- SSM整合——Spring+SpringMVC+MyBatis整合
文章目录 1. 数据库环境 2. 项目基本结构搭建 3. 配置MyBatis 4. 配置Spring 5. 配置SpringMVC 6. Controller和视图层编写 7. 配置Tomcat,进行 ...
- SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)
博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...
- 基于SSM(Spring+SpringMVC+MyBatis)框架的健身俱乐部管理系统
目录 项目介绍 运行环境 项目技术 使用说明 运行截图 项目介绍 基于SSM(Spring+SpringMVC+MyBatis)的健身俱乐部管理系统就能有效的改善当前所面临的问题.首先,此系统拥有线上 ...
- Android客户端连接SSM(Spring+SpringMVC+Mybatis)框架Java服务器端
Android客户端开发越来越流行,但是,Android客户端对应的服务器端采用什么框架呢?对于功能较为简单的应用,我建议,直接采用java web开发最简单的MVC框架即可(很多Android应用的 ...
- 基于SSM(Spring+SpringMVC+MyBatis)+ VUE框架前后端分离的汽车预约保养
目录 项目介绍 运行环境 项目技术 使用说明 运行截图 项目介绍 本系统共分为:汽车保养公司与车主服务两个部分. 汽车保养公司包括:信息管理.零件库存.查看预约.售后事件四个功能模块:信息管理包括:员 ...
- SSM框架Spring+SpringMVC+MyBatis——详细整合教程
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参 ...
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程
一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...
- eclipse maven 搭建 SSM(Spring+SpringMVC+MyBatis)开发环境 和 MyBatis 自动生成的 maven 插件配置
最近研究java web开发,首先需要配置好开发环境,查阅网上各位大神的文章后搭建完成,记录下来作为备忘. 1.安装Maven Maven下载地址:http://maven.apache.org/do ...
- IDEA搭建简单的SSM(spring+springMVC+mybatis)框架
一直想自己搭个后台框架来玩玩,只是惰性这个东西往往占据了上风,值此新春佳节,风和日丽,艳阳高照之际,就开始自己的博客之旅吧. 首先先来了解一下SSM这三个东西! (1)spring:是一个轻量级的ja ...
- 整合SSM(Spring+SpringMVC+MyBatis)-增删改查(上)
新建maven web工程,添加web.xml 添加pom文件以及依赖,update项目.然后添加maven依赖. <project xmlns="http://maven.apach ...
最新文章
- 前端学习(1170):findIndex
- 雷军:到了40岁觉得自己一事无成
- python容易出错的地方_Python中try-except出错后如何从try出错地方继续执行?
- C语言复习---获取矩阵的对角和
- [JS]视频总结-第一部分_了解JavaScript
- soapUI接口测试工具
- pandas训练集测试集划分_用pandas划分数据集实现训练集和测试集
- 拉卡拉支付最新支付方式预览——刷脸支付上线
- 执行npm install报错:npm ERR! code EINTEGRITY
- 【Mockplus教程】安装Mockplus
- 9. python 入门教程快速复习,序列,数值类型,字符串方法,列表、集合、字典方法,文件操作,解析式
- Vue实现图形化积木式编程(十三)
- 中台之上:商业银行业务架构设计
- 可用的公开 RTSP/ RTMP 在线视频流资源地址
- 后端返回amr格式音频前端处理播放播放(个人笔迹)
- C++ 异常 0xC0000005 访问冲突,exit code 0xC0000005 的解决方法
- [软考2013计算机软件水平考试软件设计师考试大纲
- 关于前端页面在IE浏览器下无法显示的问题
- 史上最简单的spark教程第十七章-快速开发部署第一个sparkStreaming+Java流处理程序
- c语言二维数组怎么找鞍点,怎么求一个二维数组的鞍点