mybatis 原理_图解源码 | MyBatis的Mapper原理
提到看源码,很多同学内心的恐惧的,其实这个从人性的角度来说是非常正常的,因为人们对未知的事物,都是非常恐惧的,其次,你内心可能始终觉得,好像不会原理也还是能工作啊,你的潜意识里没有强烈的欲望.从阅读源码的经历来说,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铣齿 采用盘形模数铣刀或指状铣刀铣齿属于成形法加工,铣刀刀齿截面形状与齿轮齿间形状相对应. 2成形磨齿 ...
- element 往node里面增加属性值_【Vue原理】Compile - 源码版 之 Parse 属性解析
写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 [2.5.17] 如果你觉得排版难 ...
- 初始化触发点击事件_【Vue原理】Event - 源码版 之 自定义事件
专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本[2.5.17] Vue 的自定义事件很简单,就是使用 观察者模 ...
- vue使用computed有参数_【Vue原理】Computed - 源码版
专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本2.5.17 今天要记录 computed 的源码,有时候想,理 ...
- vue函数如何调用其他函数?_从源码中学Vue(一)生命周期中的钩子函数的那点事儿...
欢迎来到我的<从源码中学Vue>专题系列文章,更多精彩内容持续更新中,欢迎关注 :) Vue作为当下前端最流行的框架之一,在国内占绝对的优势.所以接下来我们一起来学习它吧! 我不会像其它人 ...
- GAT 算法原理介绍与源码分析
GAT 算法原理介绍与源码分析 文章目录 GAT 算法原理介绍与源码分析 零. 前言 (与正文无关, 请忽略) 广而告之 一. 文章信息 二. 核心观点 三. 核心观点解读 四. 源码分析 4.1 G ...
- 以太坊源码阅读3——MPT原理
以太坊源码阅读3--MPT原理 介绍 MPT(Merkel-Patricia Tree),翻译为梅克尔-帕特里夏树 MPT提供了一个基于密码学验证的底层数据结构,用来存储键值对( key-value) ...
- 65、Spark Streaming:数据接收原理剖析与源码分析
一.数据接收原理 二.源码分析 入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法 ###overri ...
- 101、Spark Streaming之数据接收原理剖析与源码分析
流程图 数据接收原理剖析.png 源码剖析 入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法 ove ...
最新文章
- 影响线型缩聚物分子量的因素_【CRPS】通过硼烷引发剂实现氧气引发的超高分子量聚合物的可控合成...
- [Head First设计模式]生活中学设计模式——迭代器模式
- [codevs 1298] 凸包周长 [codevs 3201] 奶牛代理商 XI
- [react] Mern和Yeoman脚手架有什么区别?
- Android反翻译详解
- mysql not in优化_实践中如何优化MySQL(收藏)
- ^_^直接用脚本分割日志,不用工具。
- Java如何判断整数溢出,溢出后怎么得到提示?
- 经典手眼标定算法之Tsai-Lenz的OpenCV实现
- python安卓下载-python手册中文版apk下载
- 【Android】局域网屏幕共享与反向控制功能的实现
- 关于STM32的AD采样串口输出
- 字符串ucfirst解析
- 苹果手机上linux编程,iOS真机调试 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...
- KubeSphere介绍和基于K8S的安装
- 脚本及恶意网页攻击实验
- Learn OpenGL 笔记6.9 Deferred Shading(延迟着色)
- Linux修改网卡设置
- [从零开始学习FPGA编程-41]:视野篇 - 摩尔时代与摩尔定律以及后摩尔时代的到来
- vue项目接入unity3D模块并进行数据通信
热门文章
- 在线网站原型设计工具Cacoo
- TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
- Windows批处理命令学习三
- svn 提交到远程仓库_聊聊如何从SVN迁移源码到Git仓库
- 实用工具篇(三):Free Mybatis plugin
- elasticsearch 索引存储深入详解
- JS的window.parent ,window.top,window.self
- 前端组件:layui
- think.class.php下载,PHP_ThinkPHP实现将本地文件打包成zip下载,首先,将FileToZip.class文件放到T - phpStudy...
- Uploadify3.2中文提示