MyBatis概述
基本概念
框架
框架 framework:是对通用代码的封装,以三方jar的形式存在,引入框架的jar包,按照框架的规范进行配置和使用即可享受到框架提供的一系列便利、高效的服务。
- 使用框架,其实就是使用别人写好的一些程序、代码,不过要按照人家的规范来配置和使用。
Java常⽤框架:
- SSM三⼤框架:Spring + SpringMVC + MyBatis
- SpringBoot
- SpringCloud
- 等等
三层架构
三层架构将一个程序内部依据分工的不同分割成三层:表现层、业务逻辑层、数据访问层(持久层)。

表现层(UI):直接跟前端打交互
- 接收前端ajax请求
- 返回json数据给前端
业务逻辑层(BLL):
- 处理表现层转发过来的前端请求(也就是具体业务),
- 将从持久层获取的数据返回到表现层。
数据访问层(DAL,持久层):直接操作数据库完成CRUD,并将获得的数据返回到上⼀层(业务逻辑层)。
一般情况下,框架都有自己面向的层。如持久层的框架有:
- MyBatis
- Hibernate(实现了JPA规范)
- jOOQ
- Guzz
- Spring Data(实现了JPA规范)
- ActiveJDBC
- 等等
ORM 对象关系映射
O(Object):Java虚拟机中的Java对象
R(Relational):关系型数据库
M(Mapping):将Java虚拟机中的Java对象映射到数据库表中⼀⾏记录,或是将数据库表中**⼀⾏记录映射成Java虚拟机中的⼀个Java对象**。

ORM 是一种思想,把表中的记录和java对象进行关联,体现pojo数据封装的和DAO设计模式的精髓。

直接使用 JDBC 的不足
- sql 语句是写死在程序里的,不灵活,如需修改需要更改java代码,违背了OCP原则。
- 使用
ps.setString(...);给sql占位符传值是十分琐碎的,影响代码美观和开发效率。 - 使用 pojo 的 setter 进行结果集的封装是十分麻烦的,无用的重复劳动。
能不能将sql占位符传值、pojo封装结果集交给程序自动完成?
——使用 MyBatis 等框架可以实现。
MyBatis 概述
MyBatis 是持久层框架,用来操作数据库的,本质上是对 JDBC 代码的封装,可以通过编写 MyBatis 配置文件、使用 MyBatis 提供的类来完成 CRUD。
MyBatis本是apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache software foundation迁 移到了google code,并且改名为MyBatis。2013年11⽉迁移到Github。
iBATIS⼀词来源于 “internet” 和 “abatis” 的组合,是⼀个基于Java的持久层框架。iBATIS提供的 持久层框架包括SQL Maps和 Data Access Objects(DAOs)。
MyBatis 贯彻了 ORM 思想,属于半⾃动化(sql需要开发人员编写)ORM框架。
Hibernate 也贯彻了 ORM 思想,属于全⾃动化(sql不需要开发人员编写)的ORM框架
中文地址:MyBatis中文网。内有丰富的文档支持。
MyBatis 特点
⽀持定制化 SQL、存储过程、基本映射以及⾼级映射
定制化 SQL:sql需要开发人员编写,故可以进行主动的SQL调优等。
避免了⼏乎所有的 JDBC 代码中⼿动设置参数以及结果集处理
⽀持XML开发,也⽀持注解式开发。
为了保证sql语句的灵活,所以mybatis⼤部分是采⽤ XML⽅式开发。
支持代理Mapper接⼝,动态生成实现类
Java 的 POJOs 映射成数据库中的记录
体积⼩,轻量级,好学习:两个jar包(MyBatis+JDBC驱动),两个XML配置⽂件。
完全做到sql解耦合。
提供了基本映射标签。
提供了**⾼级映射**标签。
提供了XML标签,⽀持动态SQL的编写。
......
