美文网首页
MyBatis 入门(第二讲)

MyBatis 入门(第二讲)

作者: 辽A丶孙悟空 | 来源:发表于2020-07-21 19:35 被阅读0次
源码分析
  • 输入流的关闭
    在输入流对象使用完毕后,不用手工进行流的关闭。因为在输入流被使完毕后,SqlSessionFactoryBuilder对象的build()方法会自动将输入流关闭。



  • SqlSession的创建
    SqlSession对象的创建,需要使用SqlSessionFactory接口对象的openSession()方法。SqlSessionFactory接口的实现类为DefaultSqlSessionFactory。



    打开openSession()方法的源码:



    从以上源码可以看到,无参的openSession()方法,将事务的自动提交直接赋值为false。而所谓创建SqlSession,就是加载了主配置文件,创建了一个执行器对象(将来用于执行映射文件中的SQL语句),初始化了一个DB数据被修改的标志变量dirty,关闭了事务的自动提交功能。
  • 增删改的执行
    对于SqlSession的insert()、delete()、update()方法,其底层均是调用执行了update()方法。





    从以上源码可以知道,无论执行增、删还是改,均是对数据进行修改,均将dirty变量设置为了true,并且在获取到映射文件中指定的id的SQL语句后,由执行器executor执行。

  • SqlSession的提交commit()



    由以上的代码可以知道,isCommitOrRollbackRequired(force)方法的返回值为true。继续跟踪executor的commit()方法:




    由以上的代码可以知道,执行SqlSession的无参commit()方法,最终会将事务进行提交。
  • SqlSession的关闭




    由以上的代码可以知道,isCommitOrRollbackRequired(force)方法的返回值为true。继续跟踪executor的close()方法:



    再跟踪Executor接口的BaseExecutor抽象类的close()方法:


    从以上代码分析可以知道,在SqlSession进行关闭时,会将事务回滚后关闭。所以,对于MyBatis程序,无需通过显示的对SqlSession进行回滚来达到事务回滚的目的。

相关文章

  • MyBatis 入门(第二讲)

    源码分析 输入流的关闭在输入流对象使用完毕后,不用手工进行流的关闭。因为在输入流被使完毕后,SqlSessionF...

  • 第二天:mybatis基本使用

    第二天:mybatis基本使用 mybatis框架 学习计划 共四天第一天:mybatis入门mybatis的概述...

  • MyBatis

    MyBatis学习总结(一)——MyBatis快速入门 超详细MyBatis入门讲解

  • 深入浅出Mybatis-Mybatis-Generator

    目录 入门 Mybatis Generator 是什么 Mybatis Generator是Mybatis的代码生...

  • Mybatis的入门

    一.Mybatis介绍 二.Mybatis的架构 三.Mybatis入门程序开发 下载mybatis 导包核心+依...

  • 第8讲.MyBatis入门

    MyBatis入门 为何要学习MyBatis? 原始JDBC编程存在的问题 如图: 要解决这个问题可以通过今天我们...

  • Mybatis快速入门

    Mybatis 学习内容 Mybatis框架的简单入门 Mybatis框架基本的使用 Mybatis框架的深入和多...

  • MyBatis之快速入门

    title: MyBatis之快速入门tags: MyBatiscategories: MyBatis 若图片无法...

  • 1.Mybatis - 搭建

    参考 Mybatis 官方 MyBatis学习总结(一)——MyBatis快速入门 安装 说明基于Maven 步骤...

  • Intellij 第三章 测试Spring整合MyBatis

    0、如需查看Spring整合MyBatis知识请访问 MyBatis入门【十二】 Spring整合MyBatis基...

网友评论

      本文标题:MyBatis 入门(第二讲)

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