MyBatis 源码解读-带着问题去看源码
分析源码,我们还是从编程式的demo 入手。Spring 的集成我们会在后面讲到。
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlogById(1);
把文件读取成流的这一步我们就省略了。所以下面我们分成四步来分析。
第一步,我们通过建造者模式创建一个工厂类,配置文件的解析就是在这一步完成的,包括mybatis-config.xml 和Mapper 适配器文件。
问题:解析的时候怎么解析的,做了什么,产生了什么对象,结果存放到了哪里。解析的结果决定着我们后面有什么对象可以使用,和到哪里去取。
第二步,通过SqlSessionFactory 创建一个SqlSession。
问题:SqlSession 是用来操作数据库的,返回了什么实现类,除了SqlSession,还创建了什么对象,创建了什么环境?
第三步,获得一个Mapper 对象。
问题:Mapper 是一个接口,没有实现类,是不能被实例化的,那获取到的这个Mapper 对象是什么对象?为什么要从SqlSession 里面去获取?为什么传进去一个接口,然后还要用接口类型来接收?
第四步,调用接口方法。
问题:我们的接口没有创建实现类,为什么可以调用它的方法?那它调用的是什么方法?它又是根据什么找到我们要执行的SQL 的?也就是接口方法怎么和XML 映射器里面的StatementID 关联起来的?
此外,我们的方法参数是怎么转换成SQL 参数的?获取到的结果集是怎么转换成对象的?
接下来我们就会详细分析每一步的流程,包括里面有哪些核心的对象和关键的方法。
MyBatis 源码解读-带着问题去看源码相关推荐
- MyBatis源码学习笔记(从设计模式看源码)
文章目录 1.源码分析概述 ①.Mybatis架构分析 ②.门面模式 ③.设计模式的原则 2.日志模块分析 ①.适配器模型 ②.动态代理 ③.日志模块分析 3.数据源模块分析 ①.工厂模式 ②.数据源 ...
- spark源码解读3之RDD中top源码解读
更多代码请见:https://github.com/xubo245/SparkLearning spark源码解读系列环境:spark-2.0.1 (20161103github下载版) 1.理解 输 ...
- Spark源码解读之Shuffle原理剖析与源码分析
在前面几篇文章中,介绍了Spark的启动流程Spark内核架构流程深度剖析,Spark源码分析之DAGScheduler详解,Spark源码解读之Executor以及Task工作原理剖析,Spark源 ...
- 医院PACS系统源码,PACS源码,带3D重建PACS系统源码
PACS系统源码,带3D重建PACS源码 专门针对医院工作流程设计的,完全符合医院需要,配置灵活的放射科信息化解决方案.采用标准接口协议,实现预约登记.报告诊断.图像浏览和处理.信息统计等功能. 文末 ...
- 11没有源码注释_我们为什么要看源码、应该如何看源码?
看源码的意义 看源码只是一种方法.手段,而不是目的.我也曾经给自己制定过"阅读xxx源码"的目标,现在看起来真的很蠢,一点不smart(specific.measurable.at ...
- PHP在线模拟考试系统源码(带操作文档)源码分享
PHP在线模拟考试系统源码带操作文档 源码全开源免费分享, 在线考试系统将传统的培训考试与先进的网络模式相结合,使用户可根据自身特点快速构建考试.测评.练习.竞赛.调查.分析及管理 于一体的网络化考试 ...
- json对象,java对象,json字符串,java字符串转换方式,没写的自己去看源码!
package com.sgai.property;import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjs ...
- asp.net大型ERP系统源码,带完整文档【源码免费分享】
博主介绍:
- 找准切入点,调试看源码,事半功倍
关注若川视野,回复"pdf" 领取资料,回复"加群",可加群长期交流学习 最近写了很多源码分析相关的文章,React.Vue 都有,想把我阅读源码的一些心得分享 ...
最新文章
- 物体抓取位姿估計算法綜述_大盘点|6D姿态估计算法汇总(上)
- 浅析SEO优化中标签的作用?
- 我的Android 4 学习系列
- Linux下搭建mpi集群(ubuntu下用虚拟机测试)
- 【网址收藏】win10 VirtualBox安装CentOS 7教程
- ITK:在二进制映像中标记Connect组件
- php 数据库 文件转移 1146 错误
- [PAT乙级]1047 编程团体赛
- python简单爬虫(一)
- 面试题22. 链表中倒数第k个节点
- idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试
- docker 日志_Filebeat 采集 Docker 日志
- GitHub For Beginners: Don’t Get Scared, Get Started
- 个人管理 - 我是这样偷着做架构的
- 灰色关联分析_(案例)相关分析之灰色关联度
- 北京计算机应用中级,计算机应用教程(中级)
- opencv与darknet在python2.7下报错问题
- 高性能网络开发框架vpp,让你的技术提高一个level
- Java Annotation自定义注解详解
- 基于FPGA的高速电路板设计