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;
    }
相关推荐
m0_748240913 小时前
Spring Boot项目中解决跨域问题(四种方式)
spring boot·后端·dubbo
GottdesKrieges3 小时前
GaussDB用户权限管理
数据库·oracle·gaussdb
m0_748232923 小时前
使用 java -jar 命令启动 Spring Boot 应用时,指定特定的配置文件的几种实现方式
java·spring boot·jar
GGBondlctrl4 小时前
【Spring Boot】Spring 魔法世界:Bean 作用域与生命周期的奇妙之旅
java·spring boot·spring·bean的作用域·bean的生命周期·bean生命周期原码
w_juesi4 小时前
学习 PostgreSQL 流复制
学习·postgresql·oracle
sjsjsbbsbsn5 小时前
Java Web 开发中的分页与参数校验
java·spring boot·spring·状态模式·hibernate
2013crazy5 小时前
springboot基于微信小程序的仓储管理系统
spring boot·后端·微信小程序·仓储管理
m0_748238786 小时前
从 SQL 语句到数据库操作
数据库·sql·oracle
LUCIAZZZ6 小时前
通过代理模式理解Java注解的实现原理
java·开发语言·数据库·spring boot·mysql·spring·代理模式