> MyBatis 在Spring Boot应用非常广,非常强大的一个半自动的ORM框架。
- 代码下载:[https://github.com/Jackson0714/study-spring-boot.git](https://github.com/Jackson0714/study-spring-boot.git)
- [05. 深入浅出 Spring Boot - 数据访问之JDBC(源码分析+代码下载)](https://www.cnblogs.com/jackson0714/p/spring-boot-05-jdbc.html)
- [06. 深入浅出 Spring Boot - 数据访问之Druid(附代码下载)](https://www.cnblogs.com/jackson0714/p/spring-boot-06-druid.html)
- [07. 深入浅出 Spring Boot - 数据访问之Mybatis(附代码下载)](https://www.cnblogs.com/jackson0714/p/spring-boot-07-mybatis.html)
# 一、什么是MyBatis
- 1.支持定制化[ SQL](https://www.w3cschool.cn/sql/)、存储过程以及高级映射的优秀的持久层框架
- 2.避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
- 3.可以对配置和原生Map使用简单的 XML 或注解
- 4.将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
- 5.数据库、数据源、数据库连接池、JDBC、JDBC实现是什么关系?
![](https://img2020.cnblogs.com/blog/414640/202003/414640-20200304225114544-627108771.png)
- JDBC:Java和关系型数据库的桥梁,是一个桂芳,不是实现。不同类型的数据库需要有自己的JDBC实现
- 数据源:包含数据库连接池,连接池管理。常见的有C3P0、HikariDataSoiurce、Druid等
- 连接池:预先创建一些数据库连接,放到连接池里面,用的时候从连接池里面取,用完后放回连接池
- 连接池管理:创建数据库连接,管理数据库连接
- JDBC实现:MySQL JDBC实现、Oracle JDBC实现等其他实现
- MyBatis对JDBC进行了封装
# 二、整合MyBatis
我们基于之前创建的项目spring-boot-06-data-druid 来创建spring-boot-07-data-mybatis项目
1)引入MyBatis依赖
``` java
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
```
2)引入其他依赖
```xml
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
com.alibaba
druid
1.1.21
```
3)依赖图
![](https://img2020.cnblogs.com/blog/414640/202003/414640-20200304225129905-1845677451.png)
# 三、用注解方式使用 MyBatis
## 1.准备创建department表的脚本
``` mysql
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`department_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
## 2.application.yml 自动执行脚本
``` yaml
initialization-mode: always
schema:
- classpath:department.sql
```
执行一次后,注释 initialization-mode
``` yaml
# initialization-mode: always
```
## 3.创建department 实体类
``` java
package com.jackson0714.springboot.entity;
public class Department {
private Long id;
private String departmentName;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getDepartmentName() {
return departmentName;
}
}
```
## 4.创建Mapper映射类,并将SQL注解到方法上
增删改查,你要的都在这里:
``` java
@Mapper
public interface DepartmentMapper {
@Select("select * from department")
List