一、mybatis框架概述
Mybatis是一个优秀的基于Java的持久层框架,它内部封装了Jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由Mybatis框架执行sql并将结果映射为java对象并返回。
采用ORM思想解决了实体和数据库映射的问题,对Jdbc进行了封装,屏蔽了Jdbc Api底层访问细节,使我们不用与Jdbc Api打交道,就可以完成对数据库的持久化操作。
注: 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。
二、mybatis原理图![在这里插入图片描述](https://img-blog.csdnimg.cn/20190724122208854.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phbWllYmx1ZTE=,size_16,color_FFFFFF,t_70)
三、原理详解
- Mybatis配置:sqlmapConfig.xml,此文件作为Mybatis的全局配置文件,配置了Mybatis的运行环境等信息。mapper.xml即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
- 通过Mybatis环境等配置信息构造sqlsessionfactory即会话工厂
- 由会话工厂创建sqlsession即会话,操作数据库需要通过sqlsession进行。
- mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器,一个是缓存执行器。
- Mapped Statement也是mybatis一个底层封装对象,它保障了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement独享,sql的id就是mapped statement的id。
- Mapped Statement对sql执行输入参数定义,包括Hashmap、基本类型、pojo、Executor通过Mapped Statement在执行sql前将输入的java对象映射到sql中,输入参数映射就是jdbc编程中对prepared
Statement设置参数。 - Mapped Statement对sql执行输出结果进行定义,包括Hashmap、基本类型、pojo、Executor通过Mapped
Statement在执行sql后将输出结果映射到java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
参考:http://www.mybatis.org/mybatis-3/zh/index.html