提到看源码,很多同学内心的恐惧的,其实这个从人性的角度来说是非常正常的,因为人们对未知的事物,都是非常恐惧的,其次,你内心可能始终觉得,好像不会原理也还是能工作啊,你的潜意识里没有强烈的欲望.从阅读源码的经历来说,Java三大框架SSM中,Mybatis的源码是最适合入门的.

简单使用

这是一个简单的Mybatis保存对象的例子

 1@Test 2public void testSave() throws Exception { 3    //创建sessionFactory对象 4    SqlSessionFactory sf = new SqlSessionFactoryBuilder(). 5            build(Resources.getResourceAsStream("mybatis-config.xml")); 6    //获取session对象 7    SqlSession session = sf.openSession(); 8    //创建实体对象 9    User user = new User();10    user.setUsername("toby");11    user.setPassword("123");12    user.setAge(23);13    //保存数据到数据库中14    session.insert("com.toby.mybatis.domain.UserMapper.add", user);15    //提交事务,这个是必须要的,否则即使sql发了也保存不到数据库中16    session.commit();17    //关闭资源18    session.close();19}
1<mapper namespace="com.toby.mybatis.domain.UserMapper">2    3    4    <insert id="add" parameterType="com.toby.mybatis.domain.User">5        INSERT INTO USER (username,password,age) VALUES (#{username},#{password},#{age})6    insert>7mapper>

引出主题

但是在实际中,我们都不是这样操作的,我们是通过Mapper接口,调用接口方法,就能实现CRUD操作,那么关键是,这个接口究竟做了什么事,才是我们关心的.

只要把下面这段代码究竟发生了什么事弄明白,就明白,这个Mapper接口究竟做了什么事.

1public void testGetObject() throws Exception {2    SqlSession session = MybatisUtil.openSession();34    UserMapper mapper = session.getMapper(UserMapper.class);5    User user = mapper.get(5L);67    System.out.println(user);8    session.close();9}
1public interface UserMapper {23    public void add(User user);4    public User get(Long id);5}

流程图

但是我认为,一张流程图和时序图就看明白这期间所发生的事

mybatis 原理_图解源码 | MyBatis的Mapper原理相关推荐

  1. 圆弧齿轮啮合原理_图解八种齿轮的加工原理

    齿形有多种形式,其中以渐开线齿形最为常见.渐开线齿形常用的加工方法有两大类,即成形法和展成法. 1铣齿 采用盘形模数铣刀或指状铣刀铣齿属于成形法加工,铣刀刀齿截面形状与齿轮齿间形状相对应. 2成形磨齿 ...

  2. element 往node里面增加属性值_【Vue原理】Compile - 源码版 之 Parse 属性解析

    写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 [2.5.17] 如果你觉得排版难 ...

  3. 初始化触发点击事件_【Vue原理】Event - 源码版 之 自定义事件

    专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本[2.5.17] Vue 的自定义事件很简单,就是使用 观察者模 ...

  4. vue使用computed有参数_【Vue原理】Computed - 源码版

    专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本2.5.17 今天要记录 computed 的源码,有时候想,理 ...

  5. vue函数如何调用其他函数?_从源码中学Vue(一)生命周期中的钩子函数的那点事儿...

    欢迎来到我的<从源码中学Vue>专题系列文章,更多精彩内容持续更新中,欢迎关注 :) Vue作为当下前端最流行的框架之一,在国内占绝对的优势.所以接下来我们一起来学习它吧! 我不会像其它人 ...

  6. GAT 算法原理介绍与源码分析

    GAT 算法原理介绍与源码分析 文章目录 GAT 算法原理介绍与源码分析 零. 前言 (与正文无关, 请忽略) 广而告之 一. 文章信息 二. 核心观点 三. 核心观点解读 四. 源码分析 4.1 G ...

  7. 以太坊源码阅读3——MPT原理

    以太坊源码阅读3--MPT原理 介绍 MPT(Merkel-Patricia Tree),翻译为梅克尔-帕特里夏树 MPT提供了一个基于密码学验证的底层数据结构,用来存储键值对( key-value) ...

  8. 65、Spark Streaming:数据接收原理剖析与源码分析

    一.数据接收原理 二.源码分析 入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法 ###overri ...

  9. 101、Spark Streaming之数据接收原理剖析与源码分析

    流程图 数据接收原理剖析.png 源码剖析 入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法 ove ...

最新文章

  1. 影响线型缩聚物分子量的因素_【CRPS】通过硼烷引发剂实现氧气引发的超高分子量聚合物的可控合成...
  2. [Head First设计模式]生活中学设计模式——迭代器模式
  3. [codevs 1298] 凸包周长 [codevs 3201] 奶牛代理商 XI
  4. [react] Mern和Yeoman脚手架有什么区别?
  5. Android反翻译详解
  6. mysql not in优化_实践中如何优化MySQL(收藏)
  7. ^_^直接用脚本分割日志,不用工具。
  8. Java如何判断整数溢出,溢出后怎么得到提示?
  9. 经典手眼标定算法之Tsai-Lenz的OpenCV实现
  10. python安卓下载-python手册中文版apk下载
  11. 【Android】局域网屏幕共享与反向控制功能的实现
  12. 关于STM32的AD采样串口输出
  13. 字符串ucfirst解析
  14. 苹果手机上linux编程,iOS真机调试 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...
  15. KubeSphere介绍和基于K8S的安装
  16. 脚本及恶意网页攻击实验
  17. Learn OpenGL 笔记6.9 Deferred Shading(延迟着色)
  18. Linux修改网卡设置
  19. [从零开始学习FPGA编程-41]:视野篇 - 摩尔时代与摩尔定律以及后摩尔时代的到来
  20. vue项目接入unity3D模块并进行数据通信

热门文章

  1. 在线网站原型设计工具Cacoo
  2. TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
  3. Windows批处理命令学习三
  4. svn 提交到远程仓库_聊聊如何从SVN迁移源码到Git仓库
  5. 实用工具篇(三):Free Mybatis plugin
  6. elasticsearch 索引存储深入详解
  7. JS的window.parent ,window.top,window.self
  8. 前端组件:layui
  9. think.class.php下载,PHP_ThinkPHP实现将本地文件打包成zip下载,首先,将FileToZip.class文件放到T - phpStudy...
  10. Uploadify3.2中文提示