Mybatis SQL运行流程源码详解

 更新时间:2020年10月23日 09:03:49   作者:browser123  
这篇文章主要介绍了Mybatis SQL运行流程源码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

概述

源码就是能够被用来执行,生成机器能够识别的代码,通过开源源码,可以引用其功能。

重要性

1、mybatis中的sql执行,不仅要知道返回的结果是什么,还需要知道这结果是怎么来的,经过了怎样的处理,只有知道了这样的原理,碰到问题才能更好的知道问题出在那个环节。

2、能更好的扩展应用程序,可以做到代码的复用,减少开发成本和时间。

3、学习其中的设计思想能够在其他应用得已应用。

步骤

源码阅读,可以从测试用例着手,每个源码,多有大师们写的测试用例,咱们可以用大师们写的测试用例进行相关功能的测试,这样就可以知道其中的运行原理及一些设计思想。

步骤1 测试用例请求

步骤2 进行MapperProxy对象,MapperProxy代理是jdk动态代理,根据传入的mapper接口,动态生成代理对象,代理对象同时实现了InvocationHandler接口。

步骤3:进行到MapperMethod类,通过构造器初始化SqlCommand静态内部类,跟配置文件的方法签名对比,是不是有对应的方法。

步骤4 进行execute选择执行的Sqlsession


步骤5 进入DefaultSqlsession,选择执行的执行器,先选择缓存执行器,缓存没有选择默认的简单执行器,如果mybatis有配置,就选择配置的执行器,并设置预处理参数。


步骤6 进入申明处理对象进行查询,返回结果集

流程的请求总结

总结

1、mybatis使用了jdk的动态代理,在程序执行的时候生成一个具体的代理对象,执行相关的逻辑,可以在代理的方法前后执行一些逻辑,不用改变原来类的逻辑,就能增强类方法的功能,在编写底层代码的时候动态代理尤其重要;

2、应用广泛比如事物的管理、spring aop的原理实现,登录权限拦截、日志的统一输出、统计每个 api 的请求耗时等等。

3、研究源码并不是为了研究而研究,要学习其中的思想,比如动态代理、工厂模式、建造者模式,要利用这些原则来增加程序的可维护性、复用性、灵活性、可靠性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 同时使用@LoadBalanced @RefreshScope注解负载均衡失效分析

    同时使用@LoadBalanced @RefreshScope注解负载均衡失效分析

    这篇文章主要为大家介绍了同时使用@LoadBalanced @RefreshScope负载均衡失效问题分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Springboot2以代码的方式统一配置Jackson教程

    Springboot2以代码的方式统一配置Jackson教程

    这篇文章主要介绍了Springboot2以代码的方式统一配置Jackson教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 在SpringBoot下读取自定义properties配置文件的方法

    在SpringBoot下读取自定义properties配置文件的方法

    这篇文章主要介绍了在SpringBoot下读取自定义properties配置文件的方法,文中涉及到了Spring-boot中读取config配置文件的两种方式,需要的朋友可以参考下
    2017-12-12
  • SpringBoot顶层接口实现类注入项目的方法示例

    SpringBoot顶层接口实现类注入项目的方法示例

    本文主要介绍了SpringBoot顶层接口实现类注入项目的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Java实现读取resources目录下的文件路径的九种方式

    Java实现读取resources目录下的文件路径的九种方式

    本文主要介绍了Java实现读取resources目录下的文件路径的九种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 一文快速掌握Spring Cloud Stream

    一文快速掌握Spring Cloud Stream

    这篇文章主要介绍了Spring Cloud Stream详解,本篇文章所涉及到的demo练习使用的cloud 2021.0.3+ springboot2.6.8,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • SpringData JPA实现查询分页demo

    SpringData JPA实现查询分页demo

    本篇文章主要介绍了SpringData JPA实现查询分页demo,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 详解spring整合hibernate的方法

    详解spring整合hibernate的方法

    这篇文章主要介绍了spring整合hibernate的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • idea引入外部jar包的方法实现

    idea引入外部jar包的方法实现

    本文主要介绍了idea引入外部jar包的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java for循环和foreach循环的性能对比分析

    Java for循环和foreach循环的性能对比分析

    这篇文章主要介绍了Java for循环和foreach循环的性能对比分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论