Mybatis源码分析开篇
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源码:@MapperScan解析过程
- 深入理解mybatis原理(五) MyBatis缓存机制的设计与实现
- Mybatis原理解析之一 SqlSessionFactory生产(源码解析)
- springboot-mybatis多数据源的两种整合方法[通俗易懂]
- Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」
- MyBatis-Plus 基础+进阶+实战 之 自定义类型处理器
- Mybatis批量插入或更新的正确姿势
- MyBatis框架:第十一章:mybatis 逆向工程
- MyBatis框架:第十章:mybatis缓存
- MyBatis框架:第五章:源码解析及Mapper接口方式的mybatis的增,删,改,查实现
- MyBatis框架:第三章:传统方式mybatis的增,删,改,查实现
- MyBatis-Plus 快速开始及详测 SpringBoot 集成Mybatis-Plus
- 为什么想要去探究Mybatis源码?(1)
- Mybatis框架中jdbcType=”DATE” 和 jdbcType=”TIMESTAMP” 两种类型的区别
- MyBatis框架:第二章:传统mybatis的hello world 示例
- mybatis返回对象_存储过程不能返回结果
- mybatis if标签判断boolean等于true或者flase
- mybatis 原理[通俗易懂]
- mybatis-spring源码解析--事务详解
- Mybatis-plus初体验
- MyBatis-Plus 常用注解
- Mybatis返回集合类型到底是空集合还是null??源码解读
- Mybatis占位符#{}和${}的区别?源码解读(二)
- 2万多行MyBatis源码中有多少设计模式吗|文末赠书
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler详解编程语言
- MyBatis动态SQL语句详解编程语言
- mybatis中的if-else使用及if嵌套使用详解编程语言
- MyBatis是什么
- MyBatis与Oracle存储过程互通:简化开发,提高效率(mybatis调用oracle存储过程)