zoukankan      html  css  js  c++  java
  • Mybatis中使用dao实现类的执行过程分析——断点调试和跟踪源码技能

    mybatis中使用dao实现类的执行过程分析

    断点调试和跟踪源码技能

    1.在实现类和测试类中打断点
    1583310192943

    1583310240709

    2.启用debug调试,下一步得到实现类

    1583310384535

    3.选中SqlSession,右键单击

    1583310492308

    4.选中SqlSession,右键单击,选择Show Implementations显示它的所有实现,通过断点调试,我们知道选择DefaultSqlSession

    1583310654563

    5.当我们选中DefaultSqlSession,上方会有显示,然后双击

    1583310951769

    6.进到DefaultSqlSession中,找到我们在findAll()中调用的selectList,发现最终执行的是SqlSession的selectList方法,在这个方法中找到executor的query方法

    1583311599389

    7.发现Executor又是一个接口,继续打断点,找实现类到底是哪一个

    1583311768117

    8.断点调试,得知Executor的实现类是CachingExecutor
    1583312026792

    9.由此通过diagram找到CachingExecutor

    1583312301701

    10.打开CachingExecutor,在query中打断点,调试下一步,可以进到此处。又发现一个query方法

    1583312500604

    11.继续打断点,debug下一步进到此处

    1583312618513

    12.接下来在这两处打断点,继续下一步调试,发现走的第二行。

    1583312770267

    13.由delegate找到SimpleExecutor,所以在Executor类图中选择SimpleExecutor

    1583313118916

    14.打开SimpleExecutor,找到queryFromDatabase方法

    1583313294884

    15.queryFromDatabase方法中有doQuery方法,跟进,发现这是一个抽象方法

    1583313457870

    所以最终执行的是SimpleExecutor的doQuery方法

    ❤️非常重要的一张图-分析编写dao实现类Mybatis的执行过程(在新标签中打开图片查看)

    非常重要的一张图-分析编写dao实现类Mybatis的执行过程

    ❤️非常重要的一张图-分析代理dao的执行过程


  • 相关阅读:
    Building a flexiable renderer
    Indirect Illumination in mental ray
    我的心情
    Cellular Automata
    Subsurface Scattering in mental ray
    Shader Types in mental ray
    BSP Traversal
    我的渲染器终于达到了MR的速度
    How to handle displacement and motion blur
    说明
  • 原文地址:https://www.cnblogs.com/sunyanblog/p/12416064.html
Copyright © 2011-2022 走看看