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、研究源码并不是为了研究而研究,要学习其中的思想,比如动态代理、工厂模式、建造者模式,要利用这些原则来增加程序的可维护性、复用性、灵活性、可靠性。
上一篇:Java HelloWorld原理分析_动力节点Java学院整理
栏 目:JAVA代码
下一篇:SpringBoot拦截器实现对404和500等错误的拦截
本文标题:Mybatis SQL运行流程源码详解
本文地址:http://www.codeinn.net/misctech/110083.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




