• mybatis基础流程_SqlSession的引出


    SqlSession的引出

    我们跟数据库的每一次连接,都需要创建一个会话,我们用openSession()方法来创建

                       

    a .  官方源码内提供了多种获取SqlSession的方法. 直接看无参的方法

    b . 点击进去.

     

    a . 可以看到在内部,不仅创建了sqlSession对象,而是先创建了一个Executor对象(mybatis的执行器,可以负责sql语句的执行和缓存等任务) . 想要获取Executor对象,参数有2个 , 一个是事物Transaction对象,另一个为执行器的类型.

    b . 我们会先从Configuration里面拿到Enviroment,Enviroment里面就有事务工厂(</Enviroment>标签内配置事物和数据源) ,如果配置的是JDBC,则会使用Connection对象的commit()、rollback()、close()管理事务。
    如果配置成MANAGED,会把事务交给容器来管。如果不存在容器,但是配置成MANAGE不会有任何事务。如 果 是 Spring + MyBatis , 则 没 有 必 要 配 置 , 因 为 我 们 会 直 接 在applicationContext.xml里面配置数据源和事务管理器,覆盖MyBatis的配置

      a . 从上面的截图可以看到, 当没有选择执行器类型的时候,采用默认执行器, 当然这里默认执行器就是SimpleExecutor.

      b . 下面又判断一次是因为开发者怕使用者把默认拦截器设置为空, 所以这里又加了一层判断.从下面的判断可以得出Executor分为3种类型. Simple Batch Reuse

      c . 如果cacheEnabled为true, 证明需要开启二级缓存(二级缓存默认关闭,一级缓存默认打开).那么这里会引入另外一个对象CachingExecutor.来处理缓存.(很明显的装饰者模式)

      d . 最终Executor对象和Configuration对象作为参数,生成了SqlSession对象.

      e . SimpleExecutor : 简单执行器,每一次update或者select,都会产生一个新的statemen,用完直接关闭statement对象,用完直接关闭(也可以是preparedStatemnt)

           ReuseExecutor : 可重用执行器, 这里指的重用是statement的重用,使用map装起来

        BatchExecutor : 批量执行器 , (JDBC批量不支持select) ,执行update的时候,将所有的sql语句一次性推送,等待统一执行.  (这里认为 update ,add ,delete 都叫做update)

     

    到此,SqlSession对象已经生成.这个对象提供了一些基础的数据库操作,查询等 ,但是一般不直接操作这个对象.因为不是一些基础的增删改查语句的话,会造成硬编码部分过多.

    人总得做点什么 ,不是么
  • 相关阅读:
    arcgis要素折点转点
    arcgis问题数据判断
    arcgis根据位置信息查找一个点周围的线(根据交点,查找)
    GIS算法-最短路径-连通性-网络分析-路径规划
    Arcgis直连SQLServer数据库,通过REST修改数据ArcMap中更新数据库数据不更新,数据不统一
    None和NULL
    ArcPy属性查询
    WGS84转gcj02
    ArcGIS Server跨域
    MySQL中数据类型宽度有什么用, INT(11)有什么意义?
  • 原文地址:https://www.cnblogs.com/liweibing/p/12736852.html
Copyright © 2020-2023  润新知