MyBatis详细执行流程的全纪录

Mybatis简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis详细执行流程

一、通过Resource去加载全局配置文件

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }

}

二、实例化sqlSessionFactoryBuilder构造器

三、通过build中XmlConfigBuilder类去解析文件流以及环境和属性

四、 将配置信息存放到Configuration中

五、然后实例化SqlSessionFactory实现类DefaultSqlSessionFactory此时进入底层实现流程

六、由TransactionFactory 创建一个Transaction事务对象

七、创建执行器Excutor,去执行mapper

八、 创建SqlSession接口实现类DefaultSqlSession

SqlSession sqlSession = MybatisUtils.getSqlSession()
UserMapper mapper = sqlSession.getMapper(UserMapper.class);

九、 实现CURD

十、判断是否执行成功,若没有则回滚到事务提交器

十一、 事务提交

 sqlSession.commit();

十二、 关闭

 sqlSession.close();

后序

努力去看源码,加以理解分析

并且熟练使用DeBug模式来调试程序,以及查看代码底层是如何实现的。

总结

到此这篇关于MyBatis详细执行流程的文章就介绍到这了,更多相关MyBatis执行流程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis Plus插件机制与执行流程原理分析详解

    MyBatis Plus插件 MyBatis Plus提供了分页插件PaginationInterceptor.执行分析插件SqlExplainInterceptor.性能分析插件PerformanceInterceptor以及乐观锁插件OptimisticLockerInterceptor. Mybatis 通过插件 (Interceptor) 可以做到拦截四大对象相关方法的执行 ,根据需求完成相关数据的动态改变. 四大对象是: Executor StatementHandler Parame

  • MyBatis执行Sql的流程实例解析

    这篇文章主要介绍了MyBatis执行Sql的流程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本博客着重介绍MyBatis执行Sql的流程,关于在执行过程中缓存.动态SQl生成等细节不在本博客中体现,相应内容后面再单独写博客分析吧. 还是以之前的查询作为列子: public class UserDaoTest { private SqlSessionFactory sqlSessionFactory; @Before public v

  • MyBatis详细执行流程的全纪录

    Mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. mybatis详细执行流程 一.通过Resource去加载全局配置文件 import org.apache.ibatis.

  • 浅谈Mybatis SqlSession执行流程

    目录 Mybatis执行SQL流程 SqlSession Executor Mybatis之Executor Mybatis之StatementHandler 进入ResultSetHandler Mybatis执行SQL流程 在看源码之前,我们需要了解一些基本知识,如果您没有阅读Mybatis SqlSessionFactory 初始化原理,可以先阅读Mybatis SqlSessionFactory 初始化原理这篇文章,这用更有助于我们理解接下来的文章 在看源码之前,我们需要了解一些基本知识

  • Mybatis执行流程、缓存原理及相关面试题汇总

    目录 一.Mybatis执行流程 二.Mybatis缓存 1.一级缓存 2.二级缓存 3.缓存原理 三.相关面试题 1.为什么说 Mybatis 是半自动ORM映射工具?它与全自动的区别在哪里? 2.简述一下Mybatis的执行流程吧 ? 3.说一下Mybatis的优缺点 ? 4.#{} 和 ${} 的区别是什么 ? 5.Mybatis的动态SQL有什么作用?执行原理是什么?有哪些常用标签? 总结 一.Mybatis执行流程 具体分析Mybatis是如何操作数据库的! 1.定义我们的核心配置文件

  • Mybatis中的PageHelper的执行流程分析

    PageHelper Mybatis的执行流程 mybatis中首先要在配置文件中配置一些东西 然后根据这些配置去创建一个会话工厂 再根据会话工厂创建会话,会话发出操作数据库的sql语句 然后通过执行器操作数据 再使用mappedStatement对数据进行封装 这就是整个mybatis框架的执行情况. 插件的执行 它主要作用在Executor执行器与mappedeStatement之间 也就是说mybatis可以在插件中获得要执行的sql语句 在sql语句中添加limit语句,然后再去对sql

  • AngularJS 执行流程详细介绍

    一.启动阶段 大家应该都知道,当浏览器加载一个HTML页面时,它会将HMTL页面先解析成DOM树,然后逐个加载DOM树中的每一个元素节点.我们可以把AngularJS当做一个类似jQuery的js库,我们通过<script>标签引入到HTML中,那么此时Angular就做为一个普通的DOM节点等待浏览器解析,当浏览器解析到这个节点时,发现它是一个js文件,那么浏览器会停止解析剩余的DOM节点,开始执行这个js(即angular.js),同时Angular会设置一个事件监听器来监听浏览器的DOM

  • 浅谈MyBatis 如何执行一条 SQL语句

    前言 Mybatis 是 Java 开发中比较常用的 ORM 框架.在日常工作中,我们都是直接通过 Spring Boot 自动配置,并直接使用,但是却不知道 Mybatis 是如何执行一条 SQL 语句的,而这篇文章就是来揭开 Mybatis 的神秘面纱. 基础组件 我们要理解 Mybatis 的执行过程,就必须先了解 Mybatis 中都有哪一些重要的类,这些类的职责都是什么? SqlSession 我们都很熟悉,它对外提供用户和数据库之间交互需要使用的方法,隐藏了底层的细节.它默认是实现类

  • Mysql表连接的执行流程详解

    目录 1. 前言 1.1 mysql连接的原理 1.2 show warnings命令 2. 准备工作 3. inner join内连接on.where的区别 4. left join左连接on.where的区别 4.1 where驱动表过滤条件 4.2 on驱动表过滤条件 4.3 on被驱动表过滤条件 4.4 where被驱动表过滤条件 5. 总结 1. 前言 对于连接操作,驱动表和被驱动表的关联条件我们放在on后面,如果额外增加对驱动表和被驱动表的过滤条件,放到on或者where后面都不会报

  • 从 PageHelper 到 MyBatis Plugin执行概要及实现原理

    目录 一.背景 二.MyBatis 执行概要图 三.MyBatis 核心对象介绍 四.Plugin 实现原理 1.定义 Plugin 2.注册拦截器 3.执行拦截器 4.Plugin 的动态代理 总结 一.背景 在很多业务场景下我们需要去拦截 SQL,达到不入侵原有代码业务处理一些东西,比如:历史记录.分页操作.数据权限过滤操作.SQL 执行时间性能监控等等,这里我们就可以用到 MyBatis 的插件 Plugin.下面我们来了解一下 Plugin 到底是如何工作的. 使用过 MyBatis 框

  • SpringMVC的执行流程及组件详解

    这篇文章主要介绍了SpringMVC的执行流程及组件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.核心模块 数据库访问技术与集成:JDBC.XML等 Web与远程调用技术:SpringMVC.WebServlet.WebSocket等 面向切面编程:AOP 基础设施:Tomcat Spring核心容器:Beans.Core.Context.Expression.ContestSupport 测试:Test 二.执行流程 1.用户通过页

随机推荐