1. SpringBoot整合MyBatis
1.1. MyBatis介绍
MyBatis 是一款优秀的持久层Dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Java实体类)映射成数据库中的记录。
MyBatis 是一种轻量级的持久层框架,与 Spring Boot 集成后可以极大地提升开发效率。以下是集成的完整步骤,包括项目配置、数据库设计和基本操作。
MyBatis和Hibernate一样,是一个优秀的持久层框架。已经说过很多次了,原生的jdbc操作存在大量的重复性代码(如注册驱动,创建连接,创建statement,结果集检测等)。框架的作用就是把这些繁琐的代码封装,这样可以让程序员专注于sql语句本身。
MyBatis通过XML或者注解的方式将要执行的sql语句配置起来,并通过java对象和sql语句映射成最终执行的sql语句。最终由MyBatis框架执行sql,并将结果映射成java对象并返回。
1.2. MyBatis的执行流程
(1)mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的
信息。
(2)mybatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory,即会话工厂。
通过SqlSessionFactory,可以创建SqlSession即会话。Mybatis是通过SqlSession来操作数据库的。
(3)SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。
(4)Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。
1.3. SpringBoot集成MyBatis步骤
1.3.1. 第一步 pom文件中引入相关依赖
(1)pom文件中引入相关依赖
<!--集成MyBatis第一步:pom文件中引入相关依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
(2)加载pom文件
pom文件右键----》Maven—》Reload project
1.3.2. 第二步配置文件中添加数据源配置
spring:
freemarker:
template-loader-path: classpath:/templates/
suffix: .ftl
charset: utf-8
datasource:
url: jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: admin123
hikari:
connection-timeout: 30000
maximum-pool-size: 30
minimum-idle: 10
max-lifetime: 6000
mybatis-plus:
configuration:
#配置打印sql日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#设置xml文件扫描路径
mapper-locations: mapper/**/*.xml
说明:
url:数据库连接地址。
username 和 password:数据库的用户名和密码。
mapper-locations:指定 MyBatis 的 XML 映射文件路径。
type-aliases-package:指定实体类所在的包,用于启用简化的类名映射。
1.3.3. 在mapper文件夹下新建StudentMapper类
package com.zzs.szyj.mapper;
import com.zzs.szyj.model.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface StudentMapper {
/**
* 保存学员数据
*/
void save(Student student);
}
1.3.4. 在resources/mapper文件夹下新建StudentMapper文件
<?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="com.zzs.szyj.mapper.StudentMapper">
<insert id="save">
insert into student(name, age, create_time) values(
#{name}, #{age}, #{createTime}
)
</insert>
</mapper>
1.3.5. 在SzyjApplication启动类添加配置(StudentMapper类所在的包路径)
@SpringBootApplication// 标识这是一个Spring Boot的启动类
@MapperScan("com.zzs.szyj.mapper")
public class SzyjApplication {
public static void main(String[] args) {
SpringApplication.run(SzyjApplication.class, args);
}
}
1.3.6. 在StudentController添加方法保存学员数据
/**
* 新增学员数据
*/
@Resource
private StudentMapper studentMapper;
@PostMapping("/save/json")
public Student saveByJson(@RequestBody Student student) {
student.setCreateTime(new Date());
studentMapper.save(student);
return student;
}