SpringBoot开发(六)SpringBoot整合MyBatis

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文件中引入相关依赖

javascript 复制代码
 <!--集成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. 第二步配置文件中添加数据源配置

javascript 复制代码
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类

javascript 复制代码
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文件

javascript 复制代码
<?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类所在的包路径)

javascript 复制代码
@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添加方法保存学员数据

javascript 复制代码
    /**
     * 新增学员数据
     */
    @Resource
    private StudentMapper studentMapper;
    @PostMapping("/save/json")
    public Student saveByJson(@RequestBody Student student) {
        student.setCreateTime(new Date());
        studentMapper.save(student);
        return student;
    }
相关推荐
新world1 小时前
mybatis-plus从入门到入土(二):单元测试
单元测试·log4j·mybatis
全栈凯哥3 小时前
02.SpringBoot常用Utils工具类详解
java·spring boot·后端
RainbowSea5 小时前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
RainbowSea5 小时前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis
sniper_fandc7 小时前
SpringBoot系列—入门
java·spring boot·后端
JAVA学习通8 小时前
Mybatis----留言板
mybatis
Albert Edison12 小时前
【最新版】IntelliJ IDEA 2025 创建 SpringBoot 项目
java·spring boot·intellij-idea
焱焱枫14 小时前
Oracle获取执行计划之10046 技术详解
数据库·oracle
双力臂40415 小时前
MyBatis动态SQL进阶:复杂查询与性能优化实战
java·sql·性能优化·mybatis
六毛的毛16 小时前
Springboot开发常见注解一览
java·spring boot·后端