概述
1、简介
- 支持
自定义 SQL、存储过程以及高级映射
。MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的XML
或注解
来配置和映射原始类型、接口和 Java POJO
(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、官网
3、特点
- Mybatis:
- 1) 支持
自定义SQL、存储过程、及高级映射
- 2) 实现
自动对SQL的参数设置
- 3) 实现
自动对结果集进行解析和封装
- 4)
通过XML或者注解进行配置和映射
- 5)
实现Java对象与数据库表的映射转换
- 1) 支持
- 可以发现,MyBatis是
对JDBC进行了简单的封装
,帮助用户进行SQL参数的自动化映射,以及结果集与Java对象的映射
。与Hibernate相比,更加配置简单、灵活、执行效率高。但是正因为此,所以没有实现完全自动化
,需要手写SQL,这是优点也是缺点。 - 因此,对性能要求较高的电商类项目,一般会使用MyBatis,而对与业务逻辑复杂,对执行效率要求不高的传统行业,一般会使用Hibernate
4、架构
1.MyBatis有两类配置文件:
- a)
mybatis-config.xml
,是MyBatis的全局配置文件
,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。
- b)
xxxMapper.xml
,是映射文件
,里面配置要执行的SQL语句,每个SQL对应一个Statement,可以有多个
Mapper.xml文件
2.首先会通过SqlSessionFactoryBuilder来加载配置文件,生成一个SqlSessionFactory
- a) 会加载mybatis-config.xml和mapper.xml
- b)
加载mapper.xml的时候,顺便会对Sql进行编译,形成statement
3.通过SqlSessionFactory建立连接,获取SqlSession对象
4.MyBatis获取要执行的statement,进行自动参数设置
5.SqlSession底层会通过Executor(执行器)来执行编译好的Statement,获取结果
6.SQL的输入参数类型:
- a)
POJO
,普通Java对象 - b)
HashMap
,其实是POJO的Map形式, 键值对就是对象字段名和值z - c) 各种
基本数据类型
7.查询结果的输出形式
- a)
POJO
,普通Java对象 - b)
HashMap
,其实是POJO的Map形式, 键值对就是对象字段名和值 - c) 各种
基本数据类型