Mybatis的由来

iBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

mybatis究竟是什么

其实Mybatis就是封装了JDBC,让JDBC的操作更加简单,为什么这么说呢?我们来看下面的说明:
一次完整的JDBC操作数据库包括以下步骤
1、 加载数据库驱动
2、 创建并获取数据库链接
3、 创建jdbc statement对象
4、 设置sql语句
5、 设置sql语句中的参数(使用preparedStatement)
6、 通过statement执行sql并获取结果
7、 对sql执行结果进行解析处理
8、 释放资源

Mybatis封装后:
1、我们发现假如每次我们查询数据都要创建数据库链接的话,会大大消耗我们的资源,因为建立链接是一个很耗时的过程,所以Mybatis有连接池来解决这个问题。
2、创建jdbc statement对象,设置sql语句 需要在访问之前操作,若是在代码中以硬编码的形式来实现的话,不利于维护,所以Mybatis有mapper.xml来统一管理,比较直观方便。
3、预编译情况下,要把占位符的地方替换成参数传入,Mybatis自动解析传入的参数替换mapper.xml中设置好的占位符。
4、查询出结果后,用JDBC把结果集映射成对象非常麻烦,所以Mybatis能用resultMap来把结果集映射成对象。

虽然看起来,Mybatis的操作与JDBC完全不一样,但是在底层的操作确实JDBC,所以说,Mybatis是对JDBC的一次封装,让我们开发在对数据库进行操作的时候更加方便。

假如你没用过JDBC和Mybatis的话,你可能不会有所共鸣,Mybatis确实让程序员在访问数据库的时候,少干了不少活,而且我们能很轻松的对sql语句进行维护。

学习源码必备的技能

接下的篇幅,LZ会带各位去学习一下Mybatis的源码,需要一定的基础,个人觉得,需要看懂的话必须要先掌握以下技能:
(1)几个必要的设计模式
1、建造者模式。2、代理模式(重点)。3、工厂模式。4、享元模式。……
(2)会使用Mybatis(后面会穿插着介绍如何使用),最好有一定的开发经验
(3)会使用JDBC(因为底层是JDBC,了解的话,能更好的理解Mybatis到底在干什么)

希望各位看官能在这个系列学到一点东西,理解mybatis设计的妙处。

Mybatis源码分析开篇相关推荐

  1. mybatis源码分析之事务管理器

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的 ...

  2. MyBatis 源码分析系列文章合集

    1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章.起初,我只是打算通过博客的形式进行分享.但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大.在这7篇文章 ...

  3. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

  4. MyBatis 源码分析 - 缓存原理

    1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...

  5. MyBatis 源码分析 - 内置数据源

    1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...

  6. MyBatis 源码分析 - SQL 的执行过程

    本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...

  7. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  8. MyBatis 源码分析系列文章导读

    1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...

  9. springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)

    springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三) 例: package com.example.demo.service;import com.exa ...

最新文章

  1. SAP 金属行业实施项目的GAP之Metall Balance
  2. Mac下一台电脑管理多个SSH KEY(转)
  3. 爬虫篇——selenium(webdriver)进行用户登录并爬取数据)
  4. Ooui:在浏览器中运行.NET应用
  5. Linux下安装ICE(自测)
  6. 补:小玩文件1-统计文本文件里的字符个数
  7. Android 动画 介绍与使用
  8. java中typeof_JS typeof的用法
  9. 【数据结构笔记42】哈希表应用:文件中单词词频统计
  10. 路由器上的usb接口有什么用_路由器上面的USB接口有什么用途,你都知道吗?
  11. 冒泡、选择、插入、希尔、归并、快速排序、排序的稳定性、测试算法时间消耗
  12. 一段python算法实战的代码
  13. 华为emui3.1 android,华为EMUI3.1
  14. 利用BS爬取单词音标
  15. 2021-2022 AI工程师薪水趋势:美国、印度、加拿大等
  16. kindle- amazon kindle电子书导出 转换成epub,并显示中文名
  17. 2019全球IT行业薪酬报告:平均年薪超70万!最高薪职位竟是...
  18. JFreeChart展示柱状图和折线图的组合
  19. Weex实战分享|Weex在极客时间APP中的实践
  20. 如何将计算机网络设置为家庭网络连接打印机共享,怎样设置家庭网络打印机共享...

热门文章

  1. Java OutputStreamWriter close()方法与示例
  2. java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题
  3. mysql 输出参数 sql语句_MySQL: 详细的sql语句
  4. hbuilder php mysql_xampp本地服务器+HBuilder配置php环境
  5. php新闻删除功能设计,php原生开发新闻站之删除新闻
  6. Java LocalDateTime类| 带示例的compareTo()方法
  7. 春节抽空读了8本书,只有这本书我1字不落的读完了!(上)
  8. Tesseract Ocr文字识别
  9. Android实现点击两次返回键退出
  10. C语言小白——数组与字符串