首页 > 编程知识 正文

java程序设计实用教程答案(java实用教程第四版电子版,建议收藏)

时间:2023-05-03 17:06:05 阅读:121354 作者:4284

一、MyBatis的框架设计

注:上图大大参考了iteye上chenjc_it撰写的博文[原理分析之二:整个框架的设计]中的MyBatis结构体图。 chenjc_it总结得非常好。 请夸奖一个。

1 .接口层-如何与数据库交互MyBatis和数据库交互有两种方法。

a .使用传统MyBatis提供的API;

使用映射器接口

1.1 .使用传统的MyBatis提供的API

这是将语句id和查询参数传递给SqlSession对象并使用SqlSession对象完成与数据库的交互的传统方法。 MyBatis提供了一个非常方便、简单的API,用户可以执行数据库添加删除数据的检查操作、数据库连接信息和MyBatis自身的配置信息的维护操作。

使用上述MyBatis的方法是创建与数据库交互的SqlSession对象,然后根据Statement Id和参数处理数据库。 这虽然简单实用,但不符合面向对象语言的概念和面向接口编程的编程习惯。 由于面向接口的编程是面向对象的大趋势,因此MyBatis添加了使用MyBatis支持接口(Interface )的第二种调用方式来应对这一趋势。

1.2 .使用映射器接口

MyBatis将配置文件中的每个映射器节点抽象为映射器接口。 在此接口中声明的方法对应于mapper节点上的选择节点项。 也就是说,select节点的id值是Mapper接口中的方法名称,parameterType值表示启用了Mapper的方法的条目类型,而resultMap值是Mapper的方法的条目类型

根据MyBatis的配置规范进行配置后,通过SQL session.get mapper (XXX mapper.class )方法,MyBatis根据相应接口声明的方法信息,生成动态代理机制如果使用mapper接口中的一个方法,MyBatis将根据此方法的方法名称和参数类型确定语句id。 低级为SQL session.select (“语句id”,参数对象); 或SQL session.update (“语句id”,参数对象); 正在等待以实现数据库操作。 (我们将准备一篇特别的文章讨论这里的动态机制是如何实现的,敬请关注。 () ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

MyBatis引用名为Mapper接口的调用方法,只是为了满足面向接口的编程需要。 (实际上,面向接口的编程还允许用户在接口上使用注释设置SQL语句,从而使“0配置”远离XML配置文件。)。

2 .数据处理层数据处理层可以说是我电池的核心,从大的方面来说,要完成三个功能。

a .根据传入的参数构建动态SQL语句;

b .执行SQL语句和封装查询结果ListE集成

2.1 .生成参数映射和动态SQL语句

动态语句生成可以说是MyBatis框架的非常优雅的设计。 MyBatis通过使用传递的参数值使用Ognl动态构建SQL语句,为MyBatis提供了更大的灵活性和可扩展性。

参数映射是指java数据类型和jdbc数据类型之间的转换。 这里有两个过程:查询阶段。 其中,java数据类型转换为jdbc数据类型,preparedStatement.setXXX (另一种类型是将resultset查询结果集中的jdbcType数据转换为java数据类型。

(关于具体的MyBatis是如何动态生成SQL语句的,我们将准备专用的文章进行讨论,敬请关注~

2.2 .执行SQL语句和封装查询结果ListE

生成动态SQL语句后,MyBatis将执行SQL语句并将可能返回的结果集转换为列表。 在处理结果集时,MyBatis支持结果集关系的一对一和多对一转换。 还有两种支持方法:对嵌套查询语句的查询和对嵌套结果集的查询。

3 .框架支持层3.1 .事务管理机构

事务管理机制是ORM框架不可缺少的一部分,事务管理机制的质量也是考虑ORM框架是否优秀的一个标准。

3.2 .连接池管理机制

由于创建数据库连接所消耗的资源相对较大,因此连接池的设计对于具有高数据吞吐量和高访问量的APP应用程序来说非常重要。

3.3 .缓存机制

为了提高数据利用率并减少服务器和数据库负载,MyBatis为多个查询提供了会话级数据缓存。 MyBatis将一个查询放入SqlSession中,并在允许的时间间隔内直接向用户返回完全相同查询的缓存结果。 不需要在数据库中搜索。 (有关具体的MyBatis缓存机制,请提供专用文章

来讨论,敬请关注~)

SQL语句的配置方式

传统的MyBatis 配置SQL 语句方式就是使用XML文件进行配置的,但是这种方式不能很好地支持面向接口编程的理念,为了支持面向接口的编程,MyBatis 引入了Mapper接口的概念,面向接口的引入,对使用注解来配置SQL 语句成为可能,用户只需要在接口上添加必要的注解即可,不用再去配置XML文件了,但是,目前的MyBatis 只是对注解配置SQL 语句提供了有限的支持,某些高级功能还是要依赖XML配置文件配置SQL 语句。

4 引导层

引导层是配置和启动MyBatis 配置信息的方式。MyBatis 提供两种方式来引导MyBatis :基于XML配置文件的方式和基于Java API 的方式.

二、MyBatis的主要构件及其相互关系

从MyBatis代码实现的角度来看,MyBatis的主要的核心部件有以下几个:

SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能

Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护

StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。

ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所需要的参数,

ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;

TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换

MappedStatement MappedStatement维护了一条<select|update|delete|insert节点的封装,

SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回

BoundSql 表示动态生成的SQL语句以及相应的参数信息

Configuration MyBatis所有的配置信息都维持在Configuration对象之中。

(注:这里只是列出了我个人认为属于核心的部件,请读者不要先入为主,认为MyBatis就只有这些部件哦!每个人对MyBatis的理解不同,分析出的结果自然会有所不同,欢迎读者提出质疑和不同的意见,我们共同探讨~)

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以免费送给我的读者朋友们:

目录:

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

Java面试核心知识点

核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

[外链图片转存中…(img-cAlokY42-1626022397957)]

Java面试核心知识点

资料的领取方式:点赞后【戳面试资料】即可免费获取哦!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。