SpringMVC&&Mybatis

一:SpringMVC

目录

一:SpringMVC

1:SpringMVC是什么:

2:SpringMVC的执行流程:

3:SpringMvc的优点:

4:SpringMVC如何重定向和转发:

5:SpringMVC与AJAX如何相互调用:

6:如何解决POST和GET的乱码:

7:SpringMVC常用注解:

9:springMVC和struts2的区别有哪些:

二:Mybatis:

1:Mybatis是什么:

2:Mybatis工作原理:

4:Mybatis优点:

6:Mybatis分页原理

7:Mybatis一级二级缓存:

8:MyBatis实现一对多有几种方式,怎么操作的?

9:Mybatis动态sql底层原理:

5、MyBatis与Hibernate有哪些不同?

mybatis中一级缓存和二级缓存的简单介绍


1:SpringMVC是什么:

是一个实现了MVC模式的轻量级web框架。通过把Model,View,Conrtoller分离,从而把web分开,简化开发,方便操作。

2:SpringMVC的执行流程:

若有拦截器和过滤器

目录

一:SpringMVC

1:SpringMVC是什么:

2:SpringMVC的执行流程:

若有拦截器和过滤器

3:SpringMvc的优点:

4:SpringMVC如何重定向和转发:

5:SpringMVC与AJAX如何相互调用:

6:如何解决POST和GET的乱码:

7:SpringMVC常用注解:

9:springMVC和struts2的区别有哪些:

二:Mybatis:

1:Mybatis是什么:

2:Mybatis工作原理:

4:Mybatis优点:

6:Mybatis分页原理

7:Mybatis一级二级缓存:

8:MyBatis实现一对多有几种方式,怎么操作的?

9:Mybatis动态sql底层原理:

10:MyBatis延迟加载:

11:MyBatis与Hibernate有哪些不同?

mybatis中一级缓存和二级缓存的简单介绍


过滤器在前,拦截器在后,然后执行MVC流程

1:dispatchServert(前端控制器)发送请求到处理器映射器

2:处理器映射器返回一个处理器对象给前端控制器(如果有拦截器,这里还会返回一个拦截器对象)

3:前端控制器通过这个处理器对象找到合适的处理器适配器

4:处理器适配器执行完成后返回一个ModelAndView对象给前端控制器

5:前端控制器通过该对象找到视图解析器解析

6:视图解析器解析后返回一个View给前端控制器

7:前端控制器渲染这个View

8:前端控制器响应用户

3:SpringMvc的优点:

1:支持各种视图技术,不只是JSP

2:可以与Spring容器完美结合

3:支持各种请求资源的映射

4:SpringMVC如何重定向和转发:

forward:转发,在return前面加上

redirect:重定向,在return前面加上

5:SpringMVC与AJAX如何相互调用:

通过Jason框架可以把java中的对象转换成JS可以识别的jason数据。

(1)加入Jackson.jar

(2)在配置文件中配置json的映射

(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。

6:如何解决POST和GET的乱码:

POST:加入编码过滤器

GET:更改tomcat配置;对参数重新编码

7:SpringMVC常用注解:

@RequestMapping:处理请求的映射

@RequestBody:将jason对象编程可识别的java对象

8:SpringMVC中拦截器怎么写:

1:实现HandlerInterceptor接口

2:在配置文件中配置拦截器

9:springMVC和struts2的区别有哪些:

(1)springmvc的入口是一个servlet即前端控制器(DispatchServlet)

         而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。

(2)springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),                    struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

(3)Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

 

二:Mybatis:

1:Mybatis是什么:

mybatis是一个优秀的持久层框架,他对jdbc操作数据库的过程进行了封装,使开发者只用关注sql本身,不用去注册驱动,加载链接等复杂的过程。 
mybatis通过xml或者注解的方式,将要执行的各种sql语句配置起来,并通过Java对象和statement中的sql语句映射生成最终的sql语句,最后由mybatis框架执行sql语句,并将结果映射成Java对象返回。 

2:Mybatis工作原理:

mybatis通过配置文件创建sqlsessionFactory,sqlsessionFactory根据配置文件,配置文件来源于两个方面:一个是xml,一个是Java中的注解,获取sqlSession。SQLSession包含了执行sql语句的所有方法,可以通过SQLSession直接运行映射的sql语句,完成对数据的增删改查和事物的提交工作,用完之后关闭SQLSession。 

读取配置文件

根据配置文件构建SqlSessionFactory

通过SqlSessionFactory创建SqlSession

使用SqlSession对象操作数据库

关闭SqlSession

3:mapper接口工作原理:

通过jdk的动态代理方式为mapper接口创建proxy对象,代理对象会拦截接口中的方法,使它执行mapperStatement所代表的sql语句,并且把结果封装返回。

4:Mybatis优点:

1:支持对象关系映射

2:使用动态sql,是基于sql语句编程,更加灵活

3:能很好的与各类数据库兼容

4:能与Spring很好的集成

5:Mybatis缺点:

1:sql语句的编写工作量大

2:可移植性比较差,sql语句依赖于数据库,所以可移植性差

6:Mybatis分页原理

  Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页。

可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。

原理:分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,添加对应的物理分页语句和物理分页参数。

7:Mybatis一级二级缓存:

一次缓存:(默认开启)是SqlSession级别的缓存,缓存在SqlSession中,commit过后会清除

二级缓存:mapper级别的缓存,缓存在SqlSessionFactory中,需要开启,并且还需要实现序列化,(Serializable接口,实现序列化接口)commit过后还会存在,再次访问时就会先访问上次的缓存内容

8:MyBatis实现一对多有几种方式,怎么操作的?

        有联合查询和嵌套查询。

联合查询是几个表联合查询,只查询一次,通过在resultMap里面的collection节点配置一对多的类就可以完成;

嵌套查询是先查一个表,根据这个表里面的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置。

9:Mybatis动态sql底层原理:

Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断并动态拼接sql的功能。

Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。

10:MyBatis延迟加载:

在关联查询时,利用延迟加载,先加载主信息。需要关联信息时再去按需加载关联信息。这样会大大提高数据库性能。

目录

一:SpringMVC

1:SpringMVC是什么:

2:SpringMVC的执行流程:

3:SpringMvc的优点:

4:SpringMVC如何重定向和转发:

5:SpringMVC与AJAX如何相互调用:

6:如何解决POST和GET的乱码:

7:SpringMVC常用注解:

9:springMVC和struts2的区别有哪些:

二:Mybatis:

1:Mybatis是什么:

2:Mybatis工作原理:

4:Mybatis优点:

6:Mybatis分页原理

7:Mybatis一级二级缓存:

8:MyBatis实现一对多有几种方式,怎么操作的?

9:Mybatis动态sql底层原理:

10:MyBatis延迟加载:

11:MyBatis与Hibernate有哪些不同?

mybatis中一级缓存和二级缓存的简单介绍


11:MyBatis与Hibernate有哪些不同?

(1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。

(2)Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套sql映射文件,工作量大。 

(3)Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。 

 

 

mybatis中一级缓存和二级缓存的简单介绍

mybatis的一级缓存:

  MyBatis会在一个SqlSession对象中创建一个本地缓存,对于每一次查询,都会根据查询的条件去本地缓存中查找是否在缓存中,如果在缓存中,就直接从缓存中取出,然后返回给用户;否则,从数据库读取数据,将查询结果存入缓存并返回给用户。

  一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

 第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。Mybatis默认开启一级缓存。

  二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession去操作数据库得到数据会存在二级缓存区域,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

  二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。Mybatis默认没有开启二级缓存需要在setting全局参数中配置开启二级缓存。

如果缓存中有数据就不用从数据库中获取,大大提高系统性能。

Spring、Spring MVC 和 Spring Boot 都是基于 Java 开发的框架,它们各自有着不同的优势。 Spring框架是一个企业级的开源框架,它提供了一个全面的编程和配置模型,可以帮助开发者快速构建各种类型的应用程序。Spring框架的优势包括: 1. 模块化设计:Spring框架是一个模块化的设计,可以根据需要选择不同的模块来构建应用程序。 2. 松耦合:Spring框架通过依赖注入和面向接口编程等方式,实现了组件之间的松耦合。 3. 事务管理:Spring框架提供了强大的事务管理功能,可以轻松处理数据库事务。 4. AOP支持:Spring框架支持面向切面编程,可以将横切关注点(如日志记录、安全性、事务管理等)从核心业务逻辑中分离出来。 5. 整合其他框架:Spring框架可以与其他框架(如Hibernate、MyBatis等)无缝整合,提供更强大的功能。 Spring MVC框架是Spring框架的一个模块,它是一个基于MVC架构的Web框架,具有以下优势: 1. 简单易用:Spring MVC框架提供了简单易用的API,可以快速构建Web应用程序。 2. 松耦合:Spring MVC框架通过依赖注入和面向接口编程等方式,实现了组件之间的松耦合。 3. 可扩展性:Spring MVC框架提供了灵活的配置选项和可扩展的API,可以满足不同应用程序的需求。 4. 整合其他框架:Spring MVC框架可以与其他框架(如Spring、Hibernate、MyBatis等)无缝整合,提供更强大的功能。 Spring Boot框架是Spring框架的一个扩展,它具有以下优势: 1. 快速开发:Spring Boot框架提供了快速开发的功能,可以快速创建可独立运行的Spring应用程序。 2. 自动配置:Spring Boot框架提供了自动配置的功能,可以根据应用程序的需要自动配置Spring框架。 3. 简化配置:Spring Boot框架通过简化配置,减少了开发者的工作量。 4. 可嵌入性:Spring Boot框架可以将应用程序嵌入到Web容器中,或者作为独立的应用程序运行。 总之,Spring、Spring MVC 和 Spring Boot 都是非常优秀的框架,可以帮助开发者快速构建各种类型的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值