Java面试题集-Mybaits&Spring MVC

Mybaits&Spring MVC

写出来是为了让自己加深印象,go go go~

Mybaits 部分:

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.

1、Mybaits 的优缺点?

优点: 相比JDBC减少了大量代码量,减少冗余代码;使用灵活,SQL语句写在XML里,从程序代码中彻底分离,降低了耦合度,便于管理;提供XML标签,支持编写动态SQL语句;提供映射标签,支持对象与数据库的ORM字段映射关系。
缺点: SQL语句编写工作量较大,尤其是字段和关联表多时;SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

2、 Mybaits的XML文件有哪些标签属性?

select、insert、update、delete标签分别对应查询、添加、更新、删除操作。
parameterType属性表示参数的数据类型,包括基本数据类型和对应的包装类型、String和Java、Bean类型,当有多个参数时可以使用#{argn}的形式表示第n个参数。除了基本数据类型都要以全限定类名的形式指定参数类型。
resultType 表示返回的结果类型,包括基本数据类型和对应的包装类型、String和Java Bean类型。还可以使用把返回结果封装为复杂类型的resultMap。

3、Mybaits 的一级缓存是?

一级缓存是SqlSession级别,默认开启且不能关闭。
操作数据库时需要创建SqlSession对象,对象中有一个HashMap存储缓存数据,不同SqlSession之间缓存数据区域互不影响。
一级缓存的作用域是SqlSession范围的,在同一个SqlSession中执行两次相同的SQL语句时,第一次执行完毕后会将结果保存在缓存中,第二次查询直接从缓存中获取。
如果SqlSession执行了DML操作(insert、update、delete),Mybaits必须将缓存清空保证数据有效性。

4、Mybaits的二级缓存是?

二级缓存是Mapper级别,默认关闭。
使用二级缓存时多个SqlSession使用同一个Mapper的SQL语句操作数据库,得到的数据会存在二级缓存区,同样使用HashMap进行数据存储,相比于一级缓存,二级缓存范围更大,多个SqlSession可以共用二级缓存,作用域是Mapper的同一个namespace,不同SqlSession两次执行相同的namespace下的SQL语句,参数也相等,则第一次执行成功后会将数据保存在二级缓存中,第二次可直接从二级缓存中取出数据。
要使用二级缓存,需要在全局配置文件中配置< setting name=“cacheEnabled” value=“true”/>,再在对应的映射文件中配置一个< chache/ >标签。

5、Mybaits #{}和${}的区别?

使用 ${} 相当于使用字符串拼接,存在SQL注入的风险。
使用 #{} 相当于使用占位符,可以防止SQL注入,不支持使用占位符的地方就只能使用 ${},典型情况就是动态参数。

Spring MVC 部分:

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

1、Spring MVC 的处理流程?

Spring MVC

2、Spring MVC 有哪些组件?

DispatcherServlet:SpringMVC 中的前端控制器,是整个流程控制的核⼼,负责接收请求并转发给对应的处理组件。
Handler:处理器,完成具体业务逻辑,相当于 Servlet 或 Action。
HandlerMapping:完成 URL 到 Controller 映射,DispatcherServlet 通过 HandlerMapping 将不同请求映射到不同 Handler。
HandlerInterceptor:处理器拦截器,是⼀个接⼝,如果需要完成⼀些拦截处理,可以实现该接⼝。HandlerExecutionChain:处理器执⾏链,包括两部分内容:Handler 和 HandlerInterceptor。
HandlerAdapter:处理器适配器,Handler执⾏业务⽅法前需要进⾏⼀系列操作,包括表单数据验证、数据类型转换、将表单数据封装到JavaBean等,这些操作都由 HandlerAdapter 完成。DispatcherServlet 通过 HandlerAdapter 来执⾏不同的 Handler。ModelAndView:装载模型数据和视图信息,作为 Handler 处理结果返回给 DispatcherServlet。ViewResolver:视图解析器,DispatcherServlet 通过它将逻辑视图解析为物理视图,最终将渲染的结果响应给客户端。

3、Spring MVC 的相关注解?

@Controller:在类定义处添加,将类交给IoC容器管理。
@RequtestMapping:将URL请求和业务⽅法映射起来,在类和⽅法定义上都可以添加该注解。value 属性指定URL请求的实际地址,是默认值。method 属性限制请求的⽅法类型,包括GET、POST、PUT、DELETE等。如果没有使⽤指定的请求⽅法请求URL,会报405 Method Not Allowed 错误。params 属性限制必须提供的参数,如果没有会报错。
@RequestParam:如果 Controller ⽅法的形参和 URL 参数名⼀致可以不添加注解,如果不⼀致可以使⽤该注解绑定。value 属性表示HTTP请求中的参数名。required 属性设置参数是否必要,默认false。defaultValue 属性指定没有给参数赋值时的默认值。@PathVariable:Spring MVC ⽀持 RESTful ⻛格 URL,通过 @PathVariable 完成请求参数与形参的绑定。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值