图文详解Spring Boot整合MyBatis(附源码)


版权声明


教程概述

本教程以图文形式详细讲解SpringBoot整合MyBatis的流程以及具体步骤及其注意事项。本教材仅为演示案例,请在项目开发过程中将相关信息替换为与实际情况吻合的代码和配置。

数据准备

准备本教程所需的数据库、数据表及其数据。SQL脚本文件myproject.sql代码如下:

sql 复制代码
-- 创建数据库
DROP DATABASE IF EXISTS mybatisdb;
CREATE DATABASE mybatisdb;
USE mybatisdb;

-- 创建员工表
CREATE TABLE employee (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  gender VARCHAR(10),
  department VARCHAR(50),
  position VARCHAR(50),
  salary INT,
  hire_date DATE
);

-- 插入员工数据
INSERT INTO employee(name, gender, department, position, salary, hire_date) VALUES
('张三', 'male', '技术部', '软件工程师', 15000, '2021-03-15'),
('李四', 'male', '市场部', '市场专员', 8000, '2022-07-01'),
('王五', 'female', '人力资源部', 'HR经理', 12000, '2020-11-20'),
('赵六', 'male', '财务部', '会计', 9000, '2023-01-10'),
('孙七', 'female', '技术部', '测试工程师', 13000, '2021-08-25'),
('周八', 'male', '运营部', '运营主管', 11000, '2019-05-14'),
('吴九', 'female', '市场部', '品牌经理', 14000, '2022-04-18'),
('郑十', 'male', '技术部', '架构师', 20000, '2018-12-01');

-- 查询员工数据
SELECT * FROM employee;

利用Navicat等工具运行以上SQL脚本文件。

首先创建数据库mybatisdb;图示如下:

然后,运行myproject.sql文件;图示如下:

运行完毕;图示如下:

数据如下图所示:

创建Spring Boot项目

以下介绍SpringBoot项目的创建与相关配置。

创建项目

新建项目;图示如下:

创建SpringBoot项目并填写相关信息。请注意,Language选择Java,Type选择Maven;图示如下:

选择SpringBoot版本3.X,并添加Spring Web依赖;图示如下:

项目创建完毕;图示如下:

配置JDK

请依次选择File、Settings 、Compiler、Java Compiler配置JDK,图示如下:

配置SDK

请依次选择File、Project Settings、Project配置SDK,图示如下:

请依次选择File、Project Structure、Platform Settings配置SDKs,图示如下:

配置Maven

请依次选择File、Settings配置Maven,图示如下:

启动项目,检查项目是否可正常启动,图示如下:

项目启动完毕,图示如下:

添加项目依赖

在pom.xml文件的< dependencies></ dependencies>标签中新添如下依赖:

xml 复制代码
<!-- MySQL 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.32</version>
</dependency>

<!-- Druid 连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

添加完毕后,请务必刷新Maven;图示如下:


注意事项:

1、在< dependencies></ dependencies>标签中添加依赖。

2、请勿删除< dependencies></ dependencies>标签中已有的依赖。

完善Spring Boot项目结构

在此,提前准备好项目中可能用到的包和相关资源。

创建与Java代码相关的包

首先,请在java包下的com.cn.springbootmybatis中创建与Java代码相关的包;常见的有:config、controller、pojo、service、mapper、utils等,请依据项目实际情况创建;图示如下:


注意事项:

Spring Boot项目的启动类SpringBootMyBatisApplication与子包是并行的关系。请勿将SpringBootMyBatisApplication置于任意子包中。

创建与resources代码相关的包

请在resources下以com/cn/springbootmybatis/mapper的方式创建com.cn.springbootmybatis.mapper包用于存放mapper的映射文件,图示如下:

注意事项:

1、请勿以com.cn.springbootmybatis.mapper的方式创建mapper包

2、mapper映射文件的包名需与mapper的接口文件所在包的包名保持一致

配置Spring Boot项目

完善项目结构后,对Spring Boot项目进行配置。

配置项目启动类

请在项目启动类SpringBootMyBatisApplication上使用@MapperScan注解扫描mapper接口文件,图示如下:

代码如下:

java 复制代码
package com.cn.springbootmybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.cn.springbootmybatis.mapper")
public class SpringBootMyBatisApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootMyBatisApplication.class, args);
	}

}

编写项目配置文件

在此,完善项目配置文件application.properties的编写。

要点概述:

1、请务必注意配置文件中的包名,请依据项目实际情况设置

2、请务必注意配置文件中的路径,请依据项目实际情况设置

3、请务必注意配置文件中的配置信息,请依据项目实际情况设置

4、请务必注意截图的红色标记,请依据项目实际情况设置

application.properties代码如下:

xml 复制代码
# ------------------------------------------------------------------------------
# 基础配置
# ------------------------------------------------------------------------------
# 应用名称
spring.application.name=SpringBootMyBatis
# 应用端口号
server.port=8080

# ------------------------------------------------------------------------------
# 数据源配置
# ------------------------------------------------------------------------------
# 连接池类型:使用阿里巴巴 Druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# JDBC 驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=UTF-8
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=root

# ------------------------------------------------------------------------------
# MyBatis 配置
# ------------------------------------------------------------------------------
# Mapper XML文件位置
mybatis.mapper-locations=classpath:com/cn/springbootmybatis/mapper/*.xml
# 实体类包路径
mybatis.type-aliases-package=com.cn.springbootmybatis.pojo

# ------------------------------------------------------------------------------
# 日志配置
# ------------------------------------------------------------------------------
# 根日志级别:INFO
logging.level.root=info
# Mapper 日志级别:DEBUG
logging.level.com.cn.springbootmybatis.mapper=debug

图示如下:


Spring Boot项目开发

由此,正式进入项目开发。

创建实体类

在pojo中创建员工实体类Employee,代码如下:

java 复制代码
package com.cn.springbootmybatis.pojo;

import java.util.Date;

public class Employee {
    private Integer id;
    private String name;
    private String gender;
    private String department;
    private String position;
    private Integer salary;
    private Date hireDate;

    public Employee() {
    }
    public Employee(Integer id, String name, String gender, String department, String position, Integer salary, Date hireDate) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.department = department;
        this.position = position;
        this.salary = salary;
        this.hireDate = hireDate;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public Integer getSalary() {
        return salary;
    }

    public void setSalary(Integer salary) {
        this.salary = salary;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", department='" + department + '\'' +
                ", position='" + position + '\'' +
                ", salary=" + salary +
                ", hireDate=" + hireDate +
                '}';
    }
}

图示如下:

创建接口文件

在mapper中创建接口文件EmployeeMapper.java,代码如下:

java 复制代码
package com.cn.springbootmybatis.mapper;

import com.cn.springbootmybatis.pojo.Employee;

public interface EmployeeMapper {
    // 根据id查询员工
    Employee getEmployeeById(int id);
}

图示如下:

创建映射文件

在mapper中创建映射文件EmployeeMapper.xml,代码如下:

xml 复制代码
<?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.cn.springbootmybatis.mapper.EmployeeMapper">
    <select id="getEmployeeById" resultType="com.cn.springbootmybatis.pojo.Employee">
        select * from employee where id = #{id}
    </select>
</mapper>

图示如下:

测试

在测试类SpringBootMyBatisApplicationTests中,注入EmployeeMapper,并测试其功能;代码如下:

java 复制代码
package com.cn.springbootmybatis;

import com.cn.springbootmybatis.mapper.EmployeeMapper;
import com.cn.springbootmybatis.pojo.Employee;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringBootMyBatisApplicationTests {

	@Test
	void contextLoads() {
	}

	// 测试依据id查询员工
	@Autowired
	private EmployeeMapper employeeMapper;
	@Test
	void testEmployeeQuery() {
		Employee employee = employeeMapper.getEmployeeById(1);
		System.out.println(employee);
	}

}

图示如下:

测试结果如下:

至此,实现了SpringBoot与MyBatis的整合。

相关推荐
zb200641202 小时前
Laravel5.x核心特性全解析
android·spring boot·php·laravel
一只大袋鼠3 小时前
SpringBoot 初学阶段知识点汇总(一)
spring boot·笔记·后端
霸道流氓气质3 小时前
批量收集多源 URL 并异步转 PDF 打包下载的完整实现(Spring Boot + Feign + 异步任务)
windows·spring boot·pdf
做个文艺程序员3 小时前
第02篇:搭建 ES 集群 + Spring Boot 整合实战——从 Docker Compose 到 Java 客户端全覆盖
java·spring boot·elasticsearch
斯特凡今天也很帅3 小时前
Spring Boot+mybatis项目切换sql为传参成无参
spring boot·sql·mybatis
zb200641203 小时前
Laravel4.x核心特性全解析
spring boot·后端·php·laravel
Devin~Y4 小时前
大厂Java面试实录:Spring Boot微服务 + Redis缓存 + Kafka消息队列 + Prometheus链路追踪 + RAG向量检索
java·spring boot·redis·spring cloud·kafka·rabbitmq·spring mvc
JAVA社区4 小时前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
lzp07914 小时前
C#如何优雅处理引用类型的深拷贝(贰)
spring boot·后端·ui