SSM框架学习

ssh框架了解吗

我才刚自学ssm没多久,听到这个一脸懵逼 ,结果查了一下,发现其实就可以说是ssm的前生,具体就是struts+spring+hibernate,集成SSH框架的系统从职责上分为四层:表示层,业务逻辑层,持久层和域模块层。Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。

hibernate

原始的不用框架的时候就JDBC连接
一个事务过程:
1.编写sql语句
2.预编译
3.设置参数
4.执行sql
5.封装结果
这和框架有什么区别呢?首先功能单一,其次sql代码放在java语句中需要优化时,由于高度耦合会使得项目需要重新编译运行等,这当然是不行的。
那么使用hibernate(全自动框架Object Relation Mapping),通过持久化数据对象,进行对象关系的映射,并以对象的角度来访问数据库。同时因为全自动就不需要知道jdbc的操作流程,不用写sql语句,只要写javaBean对象就可以了。但是缺点明显,框架自带的sql功能单一,无法进行优化,但是hibernate又自带了HQL语句,与数据库的SQL语句相似,但不同的是HQL语句在面向对象编程的角度上,通过Session的createQuery方法创建户一个query对象,由这个对象来完成对数据库的增删改查等操作。这导致优化变得比较难。

因此出现 iBatis,也就是MyBatis框架,在这一步就是把sql语句从框架中分离了出来,和框架解耦合,增加灵活性。
MyBatis框架属于持久层,支持SQL查询,存储过程和高级映射的框架,通过XML配置和注解方式完成配置和映射。

Mybatis的循序渐进学习流程:初始的DAO层开发,进一步是mapper代理开发(官方推荐)。

Mybatis框架学习

第一步需要配置mybatisConfig.xml,比较简单,三部分:环境配置,事务配置和数据库配置。
SSM框架学习_第1张图片
最下方的mapper里指定DAO层开发的配置文件或者mapper代理开发时的class名。

初始的DAO层配置

SSM框架学习_第2张图片
配置命名空间和下方具体增删改查中的id="delByTestId"组成唯一标识。
parameterType是接收的参数类型,这里有一点需要注意的是画圈的地方,

有两种
# {value} 占位符
$ {value} 链接符

以前我常看到SQL注入,在做一些安全问题的时候常看到SQL注入去尝试,那么我就好奇注入到底是怎么防止的,在使用mybatis之前我知道了它能防止注入,而在这里我也就弄懂了两种符号的区别就是,占位符更安全,可以防止注入。
第一步:配置mybatis
第二步:写接口
第三步:写接口的实现类
第四步:对应类方法写配置文件
第五步:写了server层调用玩玩
SSM框架学习_第3张图片

mapper代理开发

相比DAO层中存在很多冗余,那么mapper代理就是为了简化这个。
尤其是接口的实现类中大量冗余。
第一步:写接口
SSM框架学习_第4张图片
第二步:由于参数和返回值类型在接口中都存在,并且接口实现类被省略了,那么怎么去映射对应的命名空间呢?此时就体现出mapper的作用了,我们修改mapper的命名空间,
SSM框架学习_第5张图片
SSM框架学习_第6张图片
在这里插入图片描述
在这里插入图片描述
通过这样就省略了实现类(注意:接口和映射文件命名一致,在同一包下,mapper的命名空间需要和接口名字一致,接口的参数类型和返回值类型需要与mapper中的一致。)
第三步:service层测试调用
SSM框架学习_第7张图片

springmvc

mvc三层,
用户法请求给前端控制器,被servlet给拦截请求,调用处理器映射器找到对应的处理器,返回给中央控制器,再传给处理器适配器,传给controller获取modelandview,中央处理器再解析,获得视图解析,进行视图渲染,整个流程完成。
详细的配置和流程参考我另一篇博客:https://blog.csdn.net/qq_35885429/article/details/105449740

你可能感兴趣的:(笔记)