前言MyBatis是一个简单、小巧,但功能非常强大的ORM开源框架,其强大还体现在缓存机制中。 MyBatis提供了l1缓存和l2缓存两种缓存机制,可以有效地处理和维护缓存,提高系统性能。 本文主要讨论了MyBatis的体系结构设计思路,并讨论了MyBatis的几个核心部件及其之间的关系。
一. Myabtis框架设计
1 .接口层-如何与数据库交互
MyBatis和数据库的交互有两种方法。
a .使用传统MyBatis提供的API;
使用映射器界面
2 .数据处理层
数据处理层可以说是MyBatis的核心,从大的方面来说,需要发挥两个功能。
a .根据传入的参数构建动态SQL语句;
b .执行SQL语句并封装查询结果的集成List
3 .框架支撑层
3.1 .事务管理机构
事务管理机制是ORM框架不可缺少的一部分,事务管理机制的质量也是考虑ORM框架是否优秀的一个标准。
3.2 .连接池管理机制
对于数据吞吐量高且具有大量访问权限的APP应用,连接池的设计非常重要,因为创建数据库连接需要消耗大量资源。
3.3 .缓存机制
为了提高数据利用率并减少服务器和数据库负载,MyBatis为一些查询提供了会话级数据缓存。 MyBatis将一个查询放置在SqlSession中,并在允许的时间间隔内,直接将缓存结果返回给用户。 不需要在数据库中搜索。
3.4 SQL语句的配置方法
传统的my batis SQL语句配置方法是使用XML文件配置的,但这种方法不能很好地支持面向接口的编程理念。 为了支持面向接口的编程,MyBatis引入了Mapper接口的概念。 面向接口的引入使得使用注释构成SQL语句成为可能,用户只需在接口中添加必要的注释即可。 虽然不再需要配置XML文件,但当前的MyBatis对注释配置SQL语句的支持有限,某些高级功能依赖于XML配置文件来配置SQL语句。
4导向层
引导层是配置和启动MyBatis配置信息的方法。 MyBatis提供了两种启动MyBatis的方法:基于XML配置文件的方法和基于Java API的方法。
二、MyBatis的主要组成部分及其相互关系从MyBatis代码实现的角度来看,MyBatis的主要核心部件是:
作为3358www.Sina.com/mybatis的顶级API,表示与数据库交互的会话,完成所需的数据库添加、删除、更改功能
SqlSessionMyBatis执行器是MyBatis调度的核心,负责SQL语句的生成和查询缓存的维护
Executor封装了JDBC语句操作,包括设置参数并将语句结果集转换为列表集合。
StatementHandler将传递给用户的参数转换为JDBC Statement所需的参数;
负责将从33558www.Sina.com/JDBC返回的结果集对象转换为List类型的集合;
负责33558www.Sina.com/Java数据类型和jdbc数据类型之间的映射和转换;
33558 www.Sina.com/mapped statement维护了选择|更新|删除节点的封装;
ParameterHandler根据从用户传递的参数对象动态生成SQL语句,将信息封装并返回BoundSql对象;
ResultSetHandler表示与动态生成的SQL语句相对应的参数信息;
TypeHandlerMyBatis所有配置信息都保留在Configuration对象中。
这些关系如下图所示。
三.总结MyBatis是一个应用广泛的可持续化框架。 简单的使用示例如下所示。 首先创建会话工厂,然后从会话工厂打开会话,在根据class类型和配置生成Mapper接口的代理中实现,最后使用Mapper进行持久性操作。
所有的过程大致可以用一张图来概括: