Spring Boot 整合 MyBatis

5 篇文章 0 订阅
5 篇文章 1 订阅

🙈作者简介:练习时长两年半的Java up主
🙉个人主页:程序员老茶
🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎
📚系列专栏:Java全栈,计算机系列(火速更新中)
💭 格言:种一棵树最好的时间是十年前,其次是现在
🏡动动小手,点个关注不迷路,感谢宝子们一键三连

课程名:Java

内容/作用:知识点/设计/实验/作业/练习

学习:Java

当然可以,以下是使用 Markdown 格式编写的 Spring Boot 整合 MyBatis 的详细教程:

Spring Boot 整合 MyBatis

简介

Spring Boot 是一个用于简化 Spring 应用开发的框架,而 MyBatis 是一个优秀的持久层框架。在本篇文章中,我们将学习如何使用 Spring Boot 整合 MyBatis,以便在项目中实现数据访问和持久化。

准备工作

在开始之前,确保已经安装了以下软件:

  • JDK 1.8 或更高版本
  • Maven 3.2 或更高版本
  • MySQL 数据库

创建项目

首先,我们需要创建一个新的 Spring Boot 项目。可以通过以下方式使用 Maven 命令创建一个基本的 Spring Boot 项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这将创建一个名为 mybatis-demo 的项目。

添加依赖

在创建的项目中,打开 pom.xml 文件,并添加以下依赖项:

<dependencies>
    <!-- Spring Boot 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

    <!-- MySQL 依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
</dependencies>

这些依赖项将用于引入 Spring Boot、MyBatis 和 MySQL 相关的功能。

配置数据库

在项目中,我们需要配置数据库连接。在 src/main/resources 目录下创建一个名为 application.properties 的文件,并添加以下内容:

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_demo?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.mybatisdemo.entity

在上述配置中,我们指定了 MySQL 数据库的 URL、用户名和密码,以及 MyBatis XML 文件所在的位置和实体类的包名。

创建实体类

在开始编写数据库访问逻辑之前,我们需要先创建实体类来映射数据库中的表。在 src/main/java/com/example/mybatisdemo/entity 目录下创建一个名为 User.java 的文件,并添加以下内容:

package com.example.mybatisdemo.entity;

public class User {
    private Long id;
    private String name;
    private Integer age;

    // Getters and Setters
}

这个实体类包含了三个属性,分别是 id、name 和 age。

创建数据访问接口

接下来,我们需要创建数据访问接口,用于定义数据库操作的方法。在 src/main/java/com/example/mybatisdemo/mapper 目录下创建一个名为 UserMapper.java 的文件,并添加以下内容:

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.entity.User;

import java.util.List;

public interface UserMapper {
    List<User> findAll();
    User findById(Long id);
    void insert(User user);
    void update(User user);
    void delete(Long id);
}

在这个接口中,我们定义了几个基本的数据库操作方法,例如查询所有用户、根据 ID 查询用户、插入用户、更新用户和删除用户。

创建数据访问映射文件

在 MyBatis 中,我们需要创建一个 XML 文件来定义实际的 SQL 语句。在 src/main/resources/mapper 目录下创建一个名为 UserMapper.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.example.mybatisdemo.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.example.mybatisdemo.entity.User">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="age" property="age" />
    </resultMap>

    <select id="findAll" resultMap="BaseResultMap">
        SELECT * FROM user
    </select>

    <select id="findById" parameterType="java.lang.Long" resultMap="BaseResultMap">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="insert">
        INSERT INTO user(name, age) VALUES (#{name}, #{age})
    </insert>

    <update id="update">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>

    <delete id="delete">
        DELETE FROM user WHERE id = #{id}
    </delete>

</mapper>

在上述映射文件中,我们使用了 <resultMap> 元素来定义数据库字段和实体类属性的映射关系,然后使用各种 SQL 语句定义了具体的数据库操作。

创建数据访问实现类

接下来,我们需要创建数据访问实现类,用于实际执行数据库操作。在 src/main/java/com/example/mybatisdemo/mapper 目录下创建一个名为 UserMapperImpl.java 的文件,并添加以下内容:

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class UserMapperImpl implements UserMapper {
    private final SqlSession sqlSession;

    public UserMapperImpl(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    @Override
    public List<User> findAll() {
        return sqlSession.selectList("findAll");
    }

    @Override
    public User findById(Long id) {
        return sqlSession.selectOne("findById", id);
    }

    @Override
    public void insert(User user) {
        sqlSession.insert("insert", user);
    }

    @Override
    public void update(User user) {
        sqlSession.update("update", user);
    }

    @Override
    public void delete(Long id) {
        sqlSession.delete("delete", id);
    }
}

在这个实现类中,我们使用 SqlSession 来执行实际的 SQL 语句,并实现了之前在接口中定义的各个方法。

创建控制器

最后一步是创建一个控制器来处理 HTTP 请求,并调用数据访问接口。在 src/main/java/com/example/mybatisdemo/controller 目录下创建一个名为 UserController.java 的文件,并添加以下内容:

package com.example.mybatisdemo.controller;

import com.example.mybatisdemo.entity.User;
import com.example.mybatisdemo.mapper.UserMapper;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserMapper userMapper;

    public UserController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userMapper.findAll();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable("id") Long id) {
        return userMapper.findById(id);
    }

    @PostMapping
    public void addUser(@RequestBody User user) {
        userMapper.insert(user);
    }

    @PutMapping("/{id}")
    public void updateUser(@PathVariable("id") Long id, @RequestBody User user) {
        user.setId(id);
        userMapper.update(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable("id") Long id) {
        userMapper.delete(id);
    }
}

在这个控制器中,我们使用 @RestController 注解将其标记为一个 RESTful Web 服务,并使用各种 HTTP 请求方法来处理用户的 CRUD 操作。

运行项目

现在,我们已经完成了整个项目的编写。可以使用以下命令来启动 Spring Boot 应用程序:

mvn spring-boot:run

然后,可以使用 Postman 或浏览器访问 http://localhost:8080/users 来测试我们的 API,以及对数据库进行增删改查操作。

至此,我们成功地使用 Spring Boot 整合 MyBatis 完成了一个简单的数据访问项目。

总结

在本篇文章中,我们详细介绍了如何使用 Spring Boot 整合 MyBatis,以及如何进行数据库访问和持久化操作。我们从创建项目、添加依赖、配置数据库,到编写实体类、映射文件、数据访问接口和实现类,最后创建控制器来处理 API 请求,完成了一个简单的示例项目。通过学习本文,希望你能够熟悉 Spring Boot 和 MyBatis 的使用,能够在实际项目中应用这些知识。

每日一问:
请简述一下关键词全栈。
全栈是指一种开发工程师的角色或技能集,具备设计、开发、部署和维护全流程的能力。关键词全栈可以涉及包括前端、后端、数据库、服务器等各种不同领域。全栈开发工程师需要具备多种技能,包括但不限于编程语言、数据库管理、网络安全、数据结构和算法等。具体来说,前端方面需要熟悉 HTML、CSS、JavaScript等技术;后端方面需要熟悉多种编程语言,如Java、Python、Ruby等以及熟练使用数据库管理系统;服务器方面需要掌握Linux系统的常用命令和操作等。全栈开发工程师不仅要具备技术方面的能力,还需要具备良好的沟通和协作能力,能够在团队中负责全栈开发流程的各个环节。

往期专栏
Java全栈开发
数据结构与算法
计算机组成原理
操作系统
数据库系统
物联网控制原理与技术
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员老茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值