分析源码,我们还是从编程式的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 源码解读-带着问题去看源码相关推荐

  1. MyBatis源码学习笔记(从设计模式看源码)

    文章目录 1.源码分析概述 ①.Mybatis架构分析 ②.门面模式 ③.设计模式的原则 2.日志模块分析 ①.适配器模型 ②.动态代理 ③.日志模块分析 3.数据源模块分析 ①.工厂模式 ②.数据源 ...

  2. spark源码解读3之RDD中top源码解读

    更多代码请见:https://github.com/xubo245/SparkLearning spark源码解读系列环境:spark-2.0.1 (20161103github下载版) 1.理解 输 ...

  3. Spark源码解读之Shuffle原理剖析与源码分析

    在前面几篇文章中,介绍了Spark的启动流程Spark内核架构流程深度剖析,Spark源码分析之DAGScheduler详解,Spark源码解读之Executor以及Task工作原理剖析,Spark源 ...

  4. 医院PACS系统源码,PACS源码,带3D重建PACS系统源码

    PACS系统源码,带3D重建PACS源码 专门针对医院工作流程设计的,完全符合医院需要,配置灵活的放射科信息化解决方案.采用标准接口协议,实现预约登记.报告诊断.图像浏览和处理.信息统计等功能. 文末 ...

  5. 11没有源码注释_我们为什么要看源码、应该如何看源码?

    看源码的意义 看源码只是一种方法.手段,而不是目的.我也曾经给自己制定过"阅读xxx源码"的目标,现在看起来真的很蠢,一点不smart(specific.measurable.at ...

  6. PHP在线模拟考试系统源码(带操作文档)源码分享

    PHP在线模拟考试系统源码带操作文档 源码全开源免费分享, 在线考试系统将传统的培训考试与先进的网络模式相结合,使用户可根据自身特点快速构建考试.测评.练习.竞赛.调查.分析及管理 于一体的网络化考试 ...

  7. json对象,java对象,json字符串,java字符串转换方式,没写的自己去看源码!

    package com.sgai.property;import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjs ...

  8. asp.net大型ERP系统源码,带完整文档【源码免费分享】

     博主介绍:

  9. 找准切入点,调试看源码,事半功倍

    关注若川视野,回复"pdf" 领取资料,回复"加群",可加群长期交流学习 最近写了很多源码分析相关的文章,React.Vue 都有,想把我阅读源码的一些心得分享 ...

最新文章

  1. 物体抓取位姿估計算法綜述_大盘点|6D姿态估计算法汇总(上)
  2. 浅析SEO优化中标签的作用?
  3. 我的Android 4 学习系列
  4. Linux下搭建mpi集群(ubuntu下用虚拟机测试)
  5. 【网址收藏】win10 VirtualBox安装CentOS 7教程
  6. ITK:在二进制映像中标记Connect组件
  7. php 数据库 文件转移 1146 错误
  8. [PAT乙级]1047 编程团体赛
  9. python简单爬虫(一)
  10. 面试题22. 链表中倒数第k个节点
  11. idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试
  12. docker 日志_Filebeat 采集 Docker 日志
  13. GitHub For Beginners: Don’t Get Scared, Get Started
  14. 个人管理 - 我是这样偷着做架构的
  15. 灰色关联分析_(案例)相关分析之灰色关联度
  16. 北京计算机应用中级,计算机应用教程(中级)
  17. opencv与darknet在python2.7下报错问题
  18. 高性能网络开发框架vpp,让你的技术提高一个level
  19. Java Annotation自定义注解详解
  20. 基于FPGA的高速电路板设计

热门文章

  1. 永远不会执行的cron表达式
  2. asp.net 2.0下用access开发的时候要注意的问题
  3. HttpURLConnection 发送http请求帮助类
  4. 针对双系统ubuntu16.04卡死及系统没有声音解决方法
  5. lua IDE all
  6. 根据json对象的某一属性对其进行排序
  7. FLASH CS3中的FLA形式组件制作教程
  8. 创建xmlhttp对象
  9. JavaScript大师必须掌握的12个知识点
  10. flex页面布局练习--知乎