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;
    }
相关推荐
一 乐1 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
期待のcode3 小时前
前后端分离项目 Springboot+vue 在云服务器上的部署
服务器·vue.js·spring boot
ProgramHan4 小时前
Spring Boot 3.2 新特性:虚拟线程的落地实践
java·jvm·spring boot
源码获取_wx:Fegn08955 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
张较瘦_6 小时前
SpringBoot3 | MyBatis-Plus 搞定宠物管理:从0到1实现增删改查
mybatis·宠物
毕设源码_郑学姐6 小时前
计算机毕业设计springboot基于HTML5的酒店预订管理系统 基于Spring Boot框架的HTML5酒店预订管理平台设计与实现 HTML5与Spring Boot技术驱动的酒店预订管理系统开
spring boot·后端·课程设计
不吃香菜学java6 小时前
spring-依赖注入
java·spring boot·后端·spring·ssm
南部余额6 小时前
Spring Boot 整合 MinIO:封装常用工具类简化文件上传、启动项目初始化桶
java·spring boot·后端·文件上传·工具类·minio·minioutils
QQ19632884756 小时前
ssm基于Springboot+的球鞋销售商城网站vue
vue.js·spring boot·后端
太空眼睛6 小时前
【MCP】使用SpringBoot基于Streamable-HTTP构建MCP-Server
spring boot·sse·curl·mcp·mcp-server·spring-ai·streamable