spring,springmvc,mybatis,三大框架学习笔记

今天从三大框架SSM开始复习起,首先两个名词,javaSE(Java Platform,Standard Edition)、javaEE(Java Platform,Enterprise Edition),javaSE就是做软件的,可以开发和部署应用在桌面、服务器和嵌入式环境中的java应用程序;javaSE就是做网页的,是企业版本的开发和部署可移植健壮可伸缩的服务器端的应用程序,它是在javaSE的基础之上开发的,可以提供web服务,组件模型,管理和通信api,可以用来实现企业级的面向服务体系结构和web2.0应用程序。

我们最初学习的就是javaEE的经典三层架构,分为:

一、web层,就是基于springMVC技术,连接前端页面和后端服务器,以前还用过Servlet和jsp

二、业务逻辑层,就是部署在后端服务器上的,主要处理业务的逻辑,使用springframework框架进行开发,以前还使用javabean模型

三、持久层,主要用于连接数据库,对数据进行持久化操作,可以用的技术有,java提供的jdbcAPI,mybatis框架,mybatisplus框架,hibernate框架,spring框架中的jdbcTemplat模板

现在比较常用的组合是SSM,springMVC、spring、mybatis

现在从细点分析一下上述使用到的各个部分:

1,jdbc(java database connectivity)是sun公司提供的一套数据库连接规范,只做规范不做具体实现,java则是把它封装成了一些列接口,而各大数据库厂商则是根据自家数据库去实现这些接口提供自家的驱动和使用方法。  使用jdbc有六个步骤,注册驱动,获取数据库的连接,获取传输器、执行sql语句,获取结果集并且解析结果集,释放资源关闭结果集、关闭传输器、关闭连接,注意先后顺序。jdbc常见问题,sql注入或叫sql攻击,就是用户在写sql语句的时候,使用特殊字符改变了原本的sql的语义,比如说登录检测,查询有无用户名密码,结果用户在密码那栏写了#号把后面的sql注释掉了,就跳过了密码。解决方案:使用带有预编译功能的传输器preparedStatement,先把sql骨架发给数据库,具体传入查询条件

2,springMVC,我先来说一下自己的理解,mvc是一种设计思想,是一种分层架构的设计思想,分为view、controller和model层,用来连接前端页面与后端服务器,具体流程是:首先前端发送请求地址url或者uri,被前端控制器dispatcherServlet接收到,把具体的url或者uri发送给处理器映射器handlerMapping,处理器映射器找到能处理这条请求的RestController标注的类里面跟RequestMapping里面路径相匹配的类,把名字发送给前端处理器,前端处理器再去调用处理器适配器handlerAdaptor,去找到具体的controller方法,再去调取service层,dao层,进行数据库操作,再一层一层把结果(model和view)返还给前端处理器,前端处理器再调用viewReslover视图解析器,解析后返回具体的vie视图,前端控制器再根据具体的model处理信息和view视图去做具体的vie渲染,并且响应用户。

springMVC是springframework的后续作品,其实就是spring封装了mvc的设计思想,和spring框架做了结合连接在了一起,实现了分层的结构设计,使模块之间松耦合,影响程度降低,一方出现故障不会影响其他。

如何使用springMVC,都是通过注解配置的方法,控制层使用@RestController注解来标识类,这个注解由两部分构成,@Controller标志这这个类是控制层,需要controller可以从这个类来寻找,并且交给spring容器去管理,和@ResponseBody,返回的对象会转换成json字符串,标志着这个类可以发送响应数据给前端,再在类上使用@RequestMapping注解,配置匹配该类的标识符,一级url或者uri,可以使handlermapping处理器映射器可以找到它,紧接着就是在方法上使用RequestMapping来映射最终的路径,可以让处理器适配器handlerAdaptor找到它,可以使用动词,也可以使用restful风格的uri路径,使用@Get、Post、Put、DeleteMapping等http动词的注解来映射路径。@RequestParam请求参数,用来获取请求传过来的参数(url),用相应的类型来接收即可,如果是用一个封装的对象来接收,则不需要添加这个注解,@PathVariable路径变量,表示获取uri风格的路径占位符标志,同理对象可省略。

3,spring,也是先来说说我的理解:首先基础的spring框架可以理解为springframework,spring它出现的背景以及解决的问题是什么,首先早期是用jsp来写一切,各种前后端代码交织在一起,显得杂乱不堪,出现问题也难以及时找到并处理,后来受到mvc三层架构思想的影响,把业务硬生分成三层,前端view视图展现层,model数据处理层,controller控制层访问转发,前端不断涌现优秀框架,后端也有mybatis,hibernate操作数据库,但是中间还是无人协调统一,于是就有了spring,以面向对象为基础,通过控制对象及其生命周期来控制整个业务流程,后期又推出springMVC延续mvc架构思想,整合了前端框架,springboot又封装了mybatis,有了ssm框架的整合。所以spring就是由一系列核心组件构成的优秀的数据处理层框架,有:core核心组件提供bean容器以及工具类支持,orm整合了连接数据库的框架,aop整合了面向切面编程,webMVC整合了springMVC框架。核心功能就是基于ioc控制翻转,把创建对象以及管理对象的生命周期的权利交给spring容器,我们要使用对象只是从容器中获取,以及对象的使用di依赖注入,能够为我们自动注入有依赖关系的对象,方便我们的使用,底层使用反射原理创建对象

4,mybatis,是一款小巧优秀的持久层框架,封装了jdbc操作数据库的api,对外提供全局配置文件,配置驱动和数据库,通过接口以及xml文件来操作数据库,把操作也提升到了对象的层面,支持自定义sql,存储过程,高级映射,也有人把它称为半自动化的orm框架,为什么叫半自动化,因为可以自定义对象属性和表中字段的映射关系。

它的使用首先原生的框架是:首先在工程的pom文件里导入springboot封装的mybatis的快速启动jar包,和jdbc的jar包;接着需要编辑mybatis的核心配置文件,环境配置连接什么数据源,transactionManager控制数据库事务的方式是jdbc,还有数据源连接池,驱动的版本,数据库的路径,用户名密码,还有mapper的映射文件的路径;然后编辑mapper接口;编辑mapper的映射文件,最后进行调用,分为七步:1,定义核心配置文件的路径。2,通过resource的getResourceAsStream将核心配置文件读取成流对象。3,通过sqlSessionFactoryBuilder的build方法把流对象构建成sqlsessionfatory。4,通过工厂的openSession方法获得sqlsession。5,通过sql会话对象获得mapper接口对象。6,调用接口对象的方法。7,使用完毕关闭会话对象sqlsession。  下面总结一下mybatis常用的一些点,mybaitis只支持单值传递,如果是多个值需要传递,要么封装成map集合,如果是常用的属性可以封装成一个pojo对象,使用对象来传值,或者是通过@Param注解来使它变成map,注解括号中的值是它的key,后面就是value。转义符,小于号会跟左括号产生歧义,大于号 > 小于号 < 传递的如果是array,list集合需要使用foreach循环遍历标签,open、close、分隔符、遍历获得的单值以及collection的类型。 动态sql:因为对象映射表中字段,如果是根据非空的属性进行查询或者操作,那么就使用where-if或者set-if,if是条件语句,里面有test属性直接后面写条件,如果为真则拼接这条sql语句如果不为真则不拼接,这样可能会产生多余的and or , 所以使用where 或者set标签可以去除多余的符号,还有互斥条件,用choose when otherwise。还有关于resulttype是得到的结果的类型,如果对象属性与表中的字段名不一致,或者封装对象或者集合、用多表联查或者子查询时使用resultmap,封装对象使用association标签搭配javatype,封装集合使用collection搭配oftype使用,封装细节,resultmap里面要指定主键ID property  column,子查询时在父查询封装对象或者集合时需要加两个属性 select 子查询名字,以及column 父查询到的结果传递给子查询的字段,后面子查询再自己封装就行。

 springboot整合mybatis后的使用是:导入jar包,配置yml文件,配置数据源以及数据库相关,在配置mybatis的映射文件路径,mapper接口里面定义方法并添加注解@Mapper,xml文件中写sql,service依赖注入mapper对象,spring通过jdk动态代理的方式创建mapper的代理对象我们可以直接使用,省去了我们获得mapper对象的步骤。方便了许多

但是mybatis进行单表操作还是需要写大量的sql在xml文件里,一个项目完毕资源文件里一堆xml文件,也是代码太多,所以mp应运而来。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值