• 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_4 Mybatis中使用Dao实现类的执行过程分析-查询方法




    delete方法没有并SqlSession的delete方法,而是调用的Upadte方法。

    在测试类这里加断点。

    实际的方法体内也加断点

    运行测试方法,选择debug的方式

    走到断点这里。会看到factory是DefaultSqlSessionFactory



    session是DefaultSqlSession

    找借口的实现类

    选中SqlSession


    选中SqlSession并鼠标右键---show Implementations 显示它的所有实现

    然后就显示了两个。通过刚才的断点调试我们知道是是DefaultSqlSession




    选中下面的DefaultSqlSession后上面就出现了路径。然后双击上面的DefaultSqlSession

    然后就进入了DefaultSqlSession这个类里

    尅看到selectList的方法。最终执行的是最下面的seletList方法。
    第一个selectList里面调用了两个参数的。连个参数的selectList里面有调用的是三个参数的selectList



    继续找到query方法里面

    Executor方法又是一个接口

    我们在这里加断点看一下。Executor的的实现类是谁。

    继续调用testFindAll方法 debug测试

    断点到代码这里。

    右键找到 CachingExecutor



    里面有个query的方法




    断点再走一步。进入到了这里。



    query方法的代码



    继续走就又到了这个断点这里



    看到delegate是一个SimpleExecutor





    这里只有一个doQuery方法

    那么在这个过程中肯定进行了转换。我们看到SimpleExecutor继承了BaseExecutor

    父类里面有query的方法


    doQuery是一个抽象方法。被它的子类也就是SimpleExecutor实现了。

    所以最终执行的是SimpleExecutor这个子类的doQuery方法

    SimpleExeccutor重写了父类的doQuery方法。并在里面最终调用了Handler的query方法



    断点过来。看到handler是RoutingStatementHandler

    进去到这个Handler里面。进去到这个StatementHandler

    找到Digram关系图。---show Digram显示关系图。


    查看实现类

    找到RoutingStatementHandler



    找到query方法内加断点


     

  • 相关阅读:
    Linux基础命令—umask
    dd(处理文件)
    HDU6446 Tree and Permutation(树、推公式)
    UVA5913 Dictionary Sizes(字典树)(转载)
    Luogu P1330 封锁阳光大学 (黑白染色)
    codeforces 1025B Weakened Common Divisor(质因数分解)
    UVA1623 Enter The Dragon (贪心)
    HDU6395 Sequence(矩阵快速幂+数论分块)
    BZOJ1257 [CQOI2007]余数之和 (数论分块)
    Codeforces 1011C Fly(二分+模拟)
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11311942.html
Copyright © 2020-2023  润新知