美文网首页Mybatis源码解析&特性使用
Mybatis框架从源码角度来讲执行CRUD的时候如何保证线程安

Mybatis框架从源码角度来讲执行CRUD的时候如何保证线程安

作者: spring_coderman | 来源:发表于2020-07-09 09:08 被阅读0次

    近期准备做一下Mybatis的源码解读,整个系列大概会有6-7篇文章。

    先释放一下目录:
    1.Mybatis框架组件设计&顶层接口
    2.Mybatis框架启动流程分析
    3.Mybatis框架源码Configuration分析
    4.Mybatis框架一条插入语句的执行流程

    5.Mybatis框架从源码角度来讲执行增,删,改的时候如何保证线程安全?

    6.Mybatis框架一条查询语句的执行流程
    7.Mybatis的日志&异常体系
    8.Mybatis与Spring集成过程
    9.Mybatis的CRUD代码生成

    这几天没有更新系列,是因为笔者在写一个代码生成工具,基于springboot+mybatis+freemarker的极简轻量级生成工具,后续会专门开博客介绍。
    本篇主要讲解Mybatis框架从源码角度来讲执行增,删,改的时候如何保证线程安全。
    讲解这个问题的原因是有网友跟我一起探讨过这样一个问题,一个线程执行DAO方法的时候会不会将另一个线程的DAO方法变量覆盖。这个大佬一看应该就知道肯定不会,那么原因是啥呢,为什么不会呢?本文从源码的角度探讨一下。
    首先我们还是从前几篇使用的Test Case说起:


    执行入口.png ThreadLocal.png 创建执行器.png 创建sqlsession.png

    通过上面四张图和对源码的跟踪,我们可以知道利用ThreadLocal可以对每个业务线程下的sql会话进行隔离,因此不会出现不同线程间的参数上下文出现互相覆盖或者影响。另外Mybatis对于ThreadLocal的使用还体现在日志方面,后面会讲到。大家可以在源码中搜一下ThreadLocal,看是否还有别的地方在用。

    相关文章

      网友评论

        本文标题:Mybatis框架从源码角度来讲执行CRUD的时候如何保证线程安

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