Mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

一、与JDBC的关系

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,

      可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

Mybatis 是对JDBC的封装的持久层框架。

所以要记住MyBatis的宗旨:是基于JDBC封装的框架,底层真正与数据库的操作肯定还是通过JDBC来进行的。

二、JDBC操作数据库步骤

1、加载数据库驱动

2、创建数据库连接

3、创建Statement对象

  执行静态SQL语句。通常通过Statement实例实现。 

  执行动态SQL语句。通常通过PreparedStatement实例实现。 

  执行数据库存储过程。通常通过CallableStatement实例实现。

4、执行SQL

5、获取结果

6、关闭连接

伪代码如下:

Class.forName("com.MySQL.jdbc.Driver"); 

Connection conn = DriverManager.getConnection("连接URL","用户名","密码"); 

Statement stmt=conn.createStatement(); 

stmt.executeUpdate("增加,删除,修改记录的SQL语句"); 

ResultSet rs = stmt.executeQuery("查询记录的SQL语句"); 

while(rs.next()){ 

//对记录的操作 

rs.close(); 

stmt.close(); 

conn.close();

三、Mybatis架构

接口层

核心就是SqlSession接口,定义了mybatis暴露给应用程序调用的api。

核心处理层

配置解析

    在初始化过程中,会加载mybaits-config.xml配置文件、映射配置文件及Mapper接口中的注解信息,

    解析后的配置信息会形成相对应的对象并保存到Configuration对象中。

SQL解析

    解析映射文件中定义的动态SQL节点,并形成数据库可执行的SQL语句。

SQL执行

涉及到很多组件,比较重要的是Executor、StatementHandler、ParameterHandler和ResultSetHandler。

Executor主要负责维护一级缓存和二级缓存,并提供事物管理的相关操作,它会将数据库相关操作委托给StatementHandler完成。

StatementHandler首先通过ParameterHandler完成SQL语句的参数绑定,然后通过java.sql.Statement对象执行SQL语句并得到结果集,最后通过

ResultSetHandler完成结果集的映射。

基础支持层

基础支持层包含mybatis的基础模块,这些模块为核心处理层提供支持。如反射模块等

源码 

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

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

StatementHandler:封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合 ParameterHandler:负责对用户传递的参数转换成JDBC Statement 所需要的参数

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

 TypeHandler :负责java数据类型和jdbc数据类型之间的映射和转换 MappedStatementMappedStatement维护了一条节点的封装

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

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


参考:

http://www.zhenchao.org/2017/10/15/mybatis-mechanism/

https://blog.csdn.net/luanlouis/article/details/40422941

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容