Mybatis SQL运行流程源码详解

作者:browser123 时间:2023-04-27 12:46:27 

概述

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

重要性

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

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

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

步骤

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

步骤1 测试用例请求

Mybatis SQL运行流程源码详解

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

Mybatis SQL运行流程源码详解

Mybatis SQL运行流程源码详解

Mybatis SQL运行流程源码详解

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

Mybatis SQL运行流程源码详解

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

Mybatis SQL运行流程源码详解
Mybatis SQL运行流程源码详解

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

Mybatis SQL运行流程源码详解
Mybatis SQL运行流程源码详解

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

Mybatis SQL运行流程源码详解

流程的请求总结

Mybatis SQL运行流程源码详解

总结

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

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

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

来源:https://blog.51cto.com/xxdeelon/2539818

标签:Mybatis,SQL
0
投稿

猜你喜欢

  • C#判断日期是否到期的方法

    2021-09-10 14:40:00
  • java的main方法中调用spring的service方式

    2023-03-29 00:12:16
  • 在WinForm应用程序中快速实现多语言的处理的方法

    2023-07-26 10:39:55
  • java HttpClient传输json格式的参数实例讲解

    2023-08-08 13:21:26
  • Android应用开发中WebView的常用方法笔记整理

    2021-06-29 04:29:39
  • C#实现窗口之间的传值

    2022-05-26 08:28:14
  • Java利用Swagger2自动生成对外接口的文档

    2023-03-31 03:22:38
  • C#从实体对象集合中导出Excel的代码

    2022-03-15 05:47:54
  • Eclipse+Webservice简单开发实例

    2023-04-10 08:55:29
  • pom文件中${project.basedir}的使用

    2021-12-24 04:24:11
  • Winform 显示Gif图片的实例代码

    2021-06-29 21:14:44
  • Spring Aop 如何获取参数名参数值

    2022-09-08 17:00:41
  • 详解Java分布式事务的 6 种解决方案

    2022-06-19 13:33:49
  • IDEA 端口占用的解决方法(推荐)

    2023-09-05 06:05:15
  • Android使用WebView实现全屏切换播放网页视频功能

    2021-10-19 18:21:16
  • SpringBoot 集成 activiti的示例代码

    2023-01-22 10:22:03
  • c#在excel中添加超链接示例分享

    2023-06-03 14:10:45
  • java二叉树面试题详解

    2021-06-13 08:40:23
  • Android实战教程第六篇之一键锁屏应用问题解决

    2023-01-28 03:13:22
  • 关于java入门与java开发环境配置详细教程

    2023-11-24 14:21:44
  • asp之家 软件编程 m.aspxhome.com