面试题java模拟商品秒杀_「JAVA秒会技术之秒杀面试官」JavaEE常见面试题(六)...

62.谈一谈你对Mybatis的了解?

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。

MyBatis是一个优秀的持久层框架,它对用jdbc操作数据库的过程进行封装,使开发者只要要关注SQL 本身,而不需要花费精力去解决例如注册驱动、创立connection、创立statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或者注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

a090323bf1b5466e07d91d2b1f5385e1.png

程序员只要要关注sqlsession,就可完成mybatis的编程。

1、 mybatis配置文件

a) SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

b) Mapper.xml,此文件作为mybatis的sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

2、 通过mybatis环境等配置信息构造SqlSessionFactory,即会话工厂。

3、 通过会话工厂创立sqlSession即会话,程序员通过sqlsession会话接口对数据库进行增删改查操作。

4、 mybatis底层自己设置了Executor执行器接口来具体操作数据库,Executor接口有两个实现,一个是基本执行器(默认)、一个是缓存执行器,sqlsession底层是通过executor接口操作数据库的。

5、 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个select\insert\\update\delete标签对应一个Mapped Statement对象,select\insert\\update\delete标签的id即是Mapped statement的id。

a) Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析解决过程。

62.SpringMVC的执行过程?

a669cc43bc8a93e2669169acbb6c33e5.png

1、使用户发送请求至前台控制器DispatcherServlet

2、DispatcherServlet收到请求调使用HandlerMapping解决器映射器。

3、解决器映射器根据请求url找到具体的解决器,生成解决器对象及解决器阻拦器(假如有则生成)一并返回给DispatcherServlet。

4、DispatcherServlet通过HandlerAdapter解决器适配器调使用解决器

5、HandlerAdapter执行解决器(handler,也叫后台控制器)。

6、Controller执行完成返回ModelAndView

7、HandlerAdapter将handler执行结果ModelAndView返回给DispatcherServlet

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9、ViewReslover解析后返回具体View对象

10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应使用户

63.SpringMVC与Strus2的区别

1、Struts2是类级别的阻拦, 一个类对应一个request上下文,SpringMVC是方法级别的阻拦,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful风格。

2、由上边起因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,解决结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2其所有Action变量是共享的,每次请求都会创立一个新的Action,一个Action对象对应一个request上下文。

3、因为Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action用,并保证线程安全,所以在准则上,是比较耗费内存的。

4、阻拦器实现机制上,Struts2有以自己的interceptor机制,SpringMVC使用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。

5、SpringMVC的入口是servlet,而Struts2是filter。

6、SpringMVC集成了Ajax,用非常方便,只要一个注解@ResponseBody即可以实现,而后直接返回响应文本就可,而Struts2阻拦器集成了Ajax,在Action中解决时一般必需安装插件或者者自己写代码集成进去,用起来也相对不方便。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值