Mybatis

作者: 01010100 | 来源:发表于2018-02-26 19:26 被阅读8次

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

相关文章

网友评论

      本文标题:Mybatis

      本文链接:https://www.haomeiwen.com/subject/vexuxftx.html