简介
核心组件
-
SqlSessionFactory:用于创建SqlSession的工厂类。
-
SqlSession:MyBatis的核心组件,用于向数据库执行SQL。
-
主配置文件:XML配置文件,可以对MyBatis的底层行为做出详细的配置。
-
Mapper接口:就是DAO接口,在MyBatis中习惯性的称之为Mapper。
-
Mapper映射器:用于编写SQL,并将SQL和实体类映射的组件,采用XML、注解均可实现。
注意: 实际开发只需要注意4、5点,Spring整合了1、2、3
MyBatis官网
整合官网
两个官网均有中文版本比较友好。
环境搭建
搭建环境引入的Maven坐标是从网站引入,选择的是使用人数最多的版本
mvnrepository
导入依赖
<!--mysql数据库连接依赖-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!--SpringBoot整合Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
properties文件配置
# DataSourceProperties
# 连接池/数据源 统一初始化一批连接 限制访问上线
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=30000
# MybatisProperties
mybatis.mapper-locations=classpath:mapper/*.xml
# 声明实体类包的包名,在mapper映射文件中不用写全类名了
mybatis.type-aliases-package=com.campus.community.entity
# 启用自动主键自增
mybatis.configuration.useGeneratedKeys=true
# 下划线和驼峰命名方式自动匹配
mybatis.configuration.mapUnderscoreToCamelCase=true
注意: 配置文件中,对连接池的配置只需要注意数据库版本 (8和5的版本对于spring.datasource.driver-class-name
和spring.datasource.url
需求不一样),和连接数据库名字,对于MyBatis的配置可以仔细看一下注释。
开发
- 创建实体类
- 实体类属性名和数据库字段一一对应,可以使用驼峰命名法(在配置文件中
mybatis.configuration.mapUnderscoreToCamelCase=true
消除了由于数据库和Java语言命名规范的问题),生成 Getter And Setter 方法、设置有参、无参构造器。
- 创建Mapper接口包
- 创建一个专门的包来存放所有Mapper接口文件,注意添加注解
@Repository/@Mapper
两个注解均可以,前者是Spring的注解,后者是MyBatis的注解,通常习惯使用@Mapper
。
- 创建Mapper映射包
- 由于是SpringBoot项目,此处是可以直接在Resources下新建Mapper包来存放xml映射文件就可以了(ssm项目下需要手动创建和Mapper接口包同样的路径的包,创建时用 " / " 代替 " . ",可以通过检查编译后的文件,查看接口和xml文件是否在同一目录)。
- xml映射文件有固定格式,建议自己在IDEA中保留一个模板。
- 需要修改
namespace
的一个路径,填写相对应的Mapper接口全类名。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
- 在Controller里注入Mapper接口即可使用,Mapper映射文件里面的SQL
@Autowired
UserMapper userMapper;
报错
org/mybatis/spring/boot/autoconfigure/MybatisDependsOnDatabaseInitializationDetector has
been compiled by a more recent version of the Java Runtime (class file version 61.0),
this version of the Java Runtime only recognizes class file versions up to 52.0
一般是版本问题,要不是Java版本过低,要不是MyBatis整合的版本过高。