java爬虫抓取动态网页(MyBatis的框架设计(一)——MyBatis接口设计)
优采云 发布时间: 2021-12-28 01:17java爬虫抓取动态网页(MyBatis的框架设计(一)——MyBatis接口设计)
一、MyBatis 的框架设计
注:上图主要参考了iteye上chenjc_it写的博文【原理解析二:整体框架设计】中的MyBatis架构图。chenjc_it总结的很好,赞一个!
1.接口层——与数据库交互的方式
MyBatis 与数据库的交互有两种方式:
一个。使用MyBatis提供的传统API;
湾 使用 Mapper 接口
1.1. 使用MyBatis提供的传统API
这是传统的将Statement Id和查询参数传递给SqlSession对象的方式,利用SqlSession对象完成与数据库的交互;MyBatis 提供了非常方便简单的 API 供用户对数据库进行数据的增删改查操作,以及数据库连接信息和 MyBatis 自身配置信息的维护操作。
上面使用MyBatis的方法是创建一个与数据库交互的SqlSession对象,然后根据StatementId和参数对数据库进行操作。这种方法简单实用,但不符合面向对象语言和面向接口编程的概念。习惯。由于面向接口编程是一个普遍的面向对象趋势,MyBatis为了适应这种趋势,增加了第二种使用MyBatis的方式来支持接口(Interface)。
1.2. 使用 Mapper 接口
MyBatis 会配置每个文件
按照MyBatis配置规范配置后,通过SqlSession.getMapper(XXXMapper.class)方法,MyBatis会根据对应接口声明的方法信息,通过动态代理机制生成一个Mapper实例。当我们使用Mapper接口的一个方法时,MyBatis会根据这个方法的方法名和参数类型来确定StatementId,底层还是通过SqlSession.select("statementId",parameterObject); 或 SqlSession.update("statementId",parameterObject); 等实现对数据库的操作,(至于动态机制这里是怎么实现的,我会专门准备一篇文章来讨论,敬请期待~)
MyBatis 引用这个 Mapper 接口的调用方法,纯粹是为了满足面向接口编程的需要。(其实还有一个原因是面向接口的编程允许用户使用注解在接口上配置SQL语句,从而脱离XML配置文件,实现“0配置”)。
2.数据处理层
数据处理层可以说是MyBatis的核心。大体来说,它必须完成三个功能:
一个。通过传入参数构造动态SQL语句;
湾 SQL语句执行和打包查询结果集成列表
2.1. 参数映射和动态SQL语句生成
动态语句生成可以说是MyBatis框架非常优雅的设计。MyBatis 使用 Ognl 通过传入的参数值动态构造 SQL 语句,使得 MyBatis 具有高度的灵活性和可扩展性。
参数映射是指java数据类型和jdbc数据类型的转换:这里有两个过程:在查询阶段,我们需要通过preparedStatement.setXXX()将java类型数据转换成jdbc类型数据,设置值;另一种是将resultset查询的结果集的jdbcType数据转换成java数据类型。
(至于具体MyBatis是如何动态构造SQL语句的,我会专门准备一篇文章来讨论,敬请期待~)
2.2. SQL 语句执行和打包查询结果集成列表
动态SQL语句生成后,MyBatis会执行SQL语句,将可能返回的结果集转换成List3.框架支持层
3.1. 交易管理机制
事务管理机制是ORM框架不可或缺的一部分,事务管理机制的好坏也是衡量一个ORM框架是否优秀的标准。
3.2. 连接池管理机制
由于创建数据库连接需要比较大的资源,对于数据吞吐量大、访问量非常大的应用来说,连接池的设计非常重要。
3.3. 缓存机制
为了提高数据利用率,降低服务器和数据库的压力,MyBatis 会为一些查询提供会话级的数据缓存,并将某个查询放在 SqlSession 中。在允许的时间间隔内,对于完全相同的查询,MyBatis 会直接将缓存的结果返回给用户,无需在数据库中搜索。(至于具体的MyBatis缓存机制,我会专门准备一篇文章来讨论,敬请期待~)
如何配置SQL语句
MyBatis 中传统的 SQL 语句配置方式是使用 XML 文件进行配置,但是这种方式不能很好地支持面向接口编程的概念。为了支持面向接口编程,MyBatis引入了Mapper接口的概念,引入了面向接口,可以使用注解来配置SQL语句。用户只需在界面上添加必要的注解,无需配置XML文件。但是,目前的 MyBatis 仅对注解配置 SQL 语句提供了有限的支持。高级功能仍然依赖 XML 配置文件来配置 SQL 语句。
4 引导层
boot层是配置和启动MyBatis配置信息的方式。MyBatis 提供了两种方式来引导 MyBatis:基于 XML 配置文件的方法和基于 Java API 的方法。
二、MyBatis 的主要组件及其关系
从MyBatis代码实现来看,MyBatis的主要核心组件如下:
(注:这里只是列出我个人认为是核心组件的组件。读者不要先入为主,认为MyBatis只有这些组件!每个人对MyBatis的理解不同,分析的结果自然会是不同。欢迎读者提出问题和不同意见,我们一起讨论~)
最后
我也采集
了Java面试核心知识点的合集来应对面试。我可以借此机会免费赠送给我的读者和朋友:
内容:
Java面试核心知识点
一共30个话题,足够读者朋友应付面试,省去朋友找资料和整理的时间!
Java面试核心知识点
知识点
一共30个话题,足够读者朋友应付面试,省去朋友找资料和整理的时间!
[外链图片正在传输中...(img-cn5P52fp-53)]
Java面试核心知识点
获取方式:点击喜欢【戳面试信息】后,即可免费获取!