欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

框架知识点总结

程序员文章站 2022-07-13 21:08:55
...

一、 mybatis

1.mybatis的工作原理?

1)SqlSessionFactoryBuilder类读取mybatis-config.xml配置文件
2)打开SqlSession
3)读取解析Mapper.xml映射文件
4)持久化操作
5)提交事务
6)关闭sqlSession

2.mybatis中$和#区别?

#{}: 相当于 JDBC 的PreparedStatement,是使用参数占位符的 ,可以防止sql注入。

${}: 相当于JDBC的Statement,只是字符串替换,容易被sql注入,如加(where 1=1).

3.mybatis和hibernate的区别?
1)hibernate是全自动的,而mybatis是半自动的;hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。

2)hibernate数据库移植性远大于mybatis
hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(Oracle、MySQL等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。
3)hibernate可以实现延时加载, (Hibernate从数据库获取某一个对象数据、获取某一个对象的集合属性时,获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据,hibernate并不从数据库加载真正的数据。而是为该对象创建一个代理对象来代表这个对象,这个对象上的所有属性都为默认值,只有在真正的需要该对象的数据时才创建这个真实的对象,真正的从数据库中加载数据。)在配置文件中加上lazy=true,当调用load()方法加载实体时采用延时加载,对一个实体关联的另一个实体采用延时加载,用到的时候再加载,mybatis不可以。

4.mybatis的一级缓存和二级缓存?

1).一级缓存是SqlSession级别的缓存,比如查找某条数据,sqlSession先去缓存中查找,是否有该数据,如果有,读取;
如果没有,从数据库中查询,并将查询到的数据放入一级缓存区域,供下次查找使用。
但sqlSession执行commit,即增删改操作时会清空缓存。这么做的目的是避免脏读。
如果commit不清空缓存,会有以下场景:A查询了某商品库存为10件,并将10件库存的数据存入缓存中,之后被客户买走了10件,数据被delete了,但是下次查询这件商品时,并不从数据库中查询,而是从缓存中查询,就会出现错误。
2).二级缓存是mapper级别的缓存,二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。
UserMapper有一个二级缓存区域(按namespace分),其它mapper也有自己的二级缓存区域(按namespace分)。每一个namespace的mapper都有一个二级缓存区域,两个mapper的namespace如果相同,这两个mapper执行sql查询到数据将存在相同的二级缓存区域中。
开启二级缓存步骤:
1,打开总开关
在MyBatis的配置文件中加入:

   <!--开启二级缓存-->    
    <setting name="cacheEnabled" value="true"/></settings> 

2,在需要开启二级缓存的mapper.xml中加入caceh标签

<span style="font-size:18px;"><cache/></span> 

3,让使用二级缓存的POJO类实现Serializable接口

public class User implements Serializable {}

二、 spring

对spring的理解

三、springMVC

1.springMVC工作原理
1)客户端发送一个请求到服务器,tomcat会接收这个请求
2)tomcat会读取项目中的web.xml中的配置
3)判断请求是否符合spring mvc 核心servlet(DispatcherServlet)的请求路径
4)如果符合会把求提交到DispatcherServlet
5)根据请求的URL由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
6)DispatcherServlet将请求提交到Controller
7)Controller调用业务逻辑处理后,返回ModelAndView
8)DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
9)视图负责将结果显示到客户端

springboot

1.springboot的好处?
最大的好处就是简化配置,之前我们单独使用ssm框架的时候,需要配置的文件非常多,容易出错;使用springboot后,只需要配置核心配置文件application.properties就行,你比如在里面配置数据库,orm框架,内置tomcat,能够快速开始一个web项目的开发,方便整合第三方框架。
2.为什么springboot能够简化配置?
因为springboot的主启动类有个核心注解@SpringBootApplication,在SpringBootApplication类上有一个重要的注解@EnableAutoConfiguration,它能够自动装配配置文件