Mybatis源码解析+综合对比

一、为什么要用MyBatis

1、一些持久化框架对比

方式

优点

缺点

应用场景

Hibernate

不再需要编写SQL就可以通过映射关系来操作数据库

当多表关联超过3个时Hibermate的级联会损失很多性能;学习成本高

适合性能要求不太苛刻的系统,不适合需要大量复杂查询的系统

SpringJDBC

内嵌Spring框架中、支持AOP;提供了统一的异常处理,框架处理了异常;事务管理

只是对原生JDBC进行一层非常薄的封装,没有缓存

需要在代码中嵌入SQL语句,适用中小型项目

Mybatis

满足灵活定制SQL和性能优化的需求

编写SQL和映射规则,工作量相对大些

性能要求高、响应快、灵活的系统;sql修改、优化比较方便

二、MyBatis概念梳理

1、概念

  1. MyBatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的查询。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects)映射成数据库中的记录。

  2. 与JDBC相比,MyBatis简化了相关代码,SQL语句在一行代码中就能执行,MyBatis提供了一个映射引擎,声明式的将SQL语句的执行结果与对象数据进行映射,通过使用一种内建的类XML表达式语言,SQL语句可以被动态生成。

下图是MyBatis功能流程的整体架构图;主要包含了接口层、核心层、基础层。

  • 接口层主要指的是session

  • 核心层主要指的是MyBatis的配置、SQL执行、结果映射等

  • 基础层主要包含日志、缓存、连接池、事务等。

 

Mybatis源码分析

 

三、核心层源码分析

 1、加载配置文件生成会话工厂

 Mybatis源码分析

2 、生成会话

 Mybatis源码分析

 

3、获取映射

 

Mybatis源码分析

4、执行select

Mybatis源码分析

 

四、源码地址

https://github.com/mybatis/mybatis-3

https://github.com/mybatis/parent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值