Java教程

Java缓存机制面试题,醍醐灌顶!

本文主要是介绍Java缓存机制面试题,醍醐灌顶!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
## 一、MyBatis的框架设计 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625322915508022.jpg) 注:上图很大程度上参考了iteye 上的chenjc_it?所写的博文[原理分析之二:框架整体设计]?中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! ### 1.接口层---和数据库交互的方式 ### MyBatis和数据库的交互有两种方式: *a.使用传统的MyBatis提供的API;* *b. 使用Mapper接口* 1.1.使用传统的MyBatis提供的API 这是传统的传递Statement Id 和查询参数给SqlSession对象,使用SqlSession对象完成和数据库的交互;MyBatis 提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和MyBatis 自身配置信息的维护操作。 [![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625322915836752.jpg)](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625322918424747.jpg) 上述使用MyBatis 的方法,是创建一个和数据库打交道的SqlSession对象,然后根据Statement Id和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,MyBatis 为了适应这一趋势,增加了第二种使用MyBatis 支持接口(Interface)调用方式。 1.2\. 使用Mapper接口 MyBatis 将配置文件中的每一个<mapper节点抽象为一个 Mapper 接口,而这个接口中声明的方法和跟<mapper节点中的<select|update|delete|insert 节点项对应,即<select|update|delete|insert 节点的id值为Mapper 接口中的方法名称,parameterType 值表示Mapper 对应方法的入参类型,而resultMap 值则对应了Mapper 接口表示的返回值类型或者返回结果集的元素类型。 [![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625322919231953.jpg)](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625322919729361.jpg) 根据MyBatis 的配置规范配置好后,通过SqlSession.getMapper(XXXMapper.class) 方法,MyBatis 会根据相应的接口声明的方法信息,通过动态代理机制生成一个Mapper 实例,我们使用Mapper 接口的某一个方法时,MyBatis 会根据这个方法的方法名和参数类型,确定Statement Id,底层还是通过SqlSession.select("statementId",parameterObject);或者SqlSession.update("statementId",parameterObject); 等等来实现对数据库的操作,(*至于这里的动态机制是怎样实现的,我将准备专门一片文章来讨论,敬请关注~*) MyBatis 引用Mapper 接口这种调用方式,纯粹是为了满足面向接口编程的需要。(其实还有一个原因是在于,面向接口的编程,使得用户在接口上可以使用注解来配置SQL语句,这样就可以脱离XML配置文件,实现“0配置”)。 ### 2.数据处理层 ### 数据处理层可以说是MyBatis 的核心,从大的方面上讲,它要完成三个功能: *a. 通过传入参数构建动态SQL语句;* *b. SQL语句的执行以及封装查询结果集成List<E* 2.1.参数映射和动态SQL语句生成 动态语句生成可以说是MyBatis框架非常优雅的一个设计,MyBatis 通过传入的参数值,使用 Ognl 来动态地构造SQL语句,使得MyBatis 有很强的灵活性和扩展性。 参数映射指的是对于java 数据类型和jdbc数据类型之间的转换:这里有包括两个过程:查询阶段,我们要将java类型的数据,转换成jdbc类型的数据,通过 preparedStatement.setXXX()来设值;另一个就是对resultset查询结果集的jdbcType 数据转换成java 数据类型。 (*至于具体的MyBatis是如何动态构建SQL语句的,我将准备专门一篇文章来讨论,敬请关注~*) 2.2\. SQL语句的执行以及封装查询结果集成List
这篇关于Java缓存机制面试题,醍醐灌顶!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!