Spring Boot中集成MyBatis操作数据库详细教程

news/2024/11/5 12:56:28 标签: spring boot, mybatis, 数据库, java

目录

  • 前言
  • 1. 项目依赖配置
    • 1.1 引入MyBatis和数据库驱动依赖
    • 1.2 数据源配置
  • 2. 创建数据库映射实体类
  • 3. 创建Mapper层接口
  • 4. 创建Service层
    • 4.1 定义Service接口
    • 4.2 实现Service接口
  • 5. 创建Controller层
  • 6. 运行和测试项目
    • 6.1 启动项目
    • 6.2 测试接口
  • 7. 总结

前言

在Java开发中,MyBatis是一款轻量级且灵活的持久层框架,支持SQL语句和自定义映射,尤其适合需要复杂SQL操作的应用场景。结合Spring Boot,我们可以更加方便地使用MyBatis进行数据操作。本篇文章将手把手地介绍如何在Spring Boot项目中集成MyBatis,并实现基础的增删改查操作。我们会从依赖配置开始,到实体类、Mapper接口、Service和Controller的创建,最终形成一个简洁易用的应用结构。
在这里插入图片描述

1. 项目依赖配置

在Spring Boot项目中使用MyBatis的第一步,是在pom.xml文件中引入MyBatis的依赖。这里使用mybatis-spring-boot-starter来实现快速集成,同时加入MySQL驱动程序mysql-connector-java,实现与数据库的连接。

1.1 引入MyBatis和数据库驱动依赖

pom.xml文件中加入以下依赖配置:

<dependencies>
    <!-- MyBatis Spring Boot Starter 依赖 -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>
    
    <!-- MySQL Connector 依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

1.2 数据源配置

接下来,在application.properties中配置数据库连接信息,以便MyBatis能够正确访问数据库。在这里,我们设置数据库URL、用户名、密码及其他连接信息。

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

# 指定MyBatis的Mapper XML文件位置
mybatis.mapper-locations=classpath:mapper/*.xml

2. 创建数据库映射实体类

MyBatis通过实体类来映射数据库表的字段。以User表为例,创建一个实体类User来表示用户信息,包含ID、用户名、邮箱等字段。

com.example.demo.model包中创建User类,与数据库中的用户表结构相对应。该类包含属性及其getter和setter方法。

java">package com.example.demo.model;

public class User {
    private Long id;
    private String username;
    private String email;

    // Getter 和 Setter 方法
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

3. 创建Mapper层接口

Mapper层是MyBatis与数据库进行交互的核心。通过Mapper接口定义数据操作方法,使用MyBatis的@Select等注解书写SQL语句,实现增删改查等数据库操作。

com.example.demo.mapper包中创建UserMapper接口,并用@Mapper注解标记。这里定义的接口方法将被MyBatis自动实现,完成相应的SQL操作。

java">package com.example.demo.mapper;

import com.example.demo.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user")
    List<User> findAll();

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);
}

此接口中的方法findAll()findById()分别用于查询所有用户和根据ID查询特定用户的信息。

4. 创建Service层

Service层主要封装业务逻辑,进一步管理数据操作。通过Service层,我们可以将数据库操作与业务需求分离,提高代码的可读性和维护性。

4.1 定义Service接口

com.example.demo.service包中创建UserService接口,定义获取所有用户和根据ID查找用户的方法:

java">package com.example.demo.service;

import com.example.demo.model.User;

import java.util.List;

public interface UserService {
    List<User> getAllUsers();
    User getUserById(Long id);
}

4.2 实现Service接口

com.example.demo.service.impl包中创建UserServiceImpl类,实现UserService接口。使用@Service注解声明这是一个服务类,并通过@Autowired注入UserMapper,调用Mapper接口方法实现数据库操作。

java">package com.example.demo.service.impl;

import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

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

    @Override
    public User getUserById(Long id) {
        return userMapper.findById(id);
    }
}

在这里,我们通过UserServiceImpl实现具体的业务逻辑,进一步包装了Mapper中的数据库操作,使得Controller层能够更专注于接口设计。

5. 创建Controller层

Controller层是前端和后端交互的接口层,用于接收客户端请求,调用Service层的业务逻辑,并返回处理结果。我们使用Spring MVC的@RestController注解来创建控制器。

com.example.demo.controller包中创建UserController类,用于处理用户相关的HTTP请求。通过@Autowired注入UserService,并定义接口方法实现获取用户列表和根据ID查找用户的功能。

java">package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

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

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

上述代码实现了两个接口方法:

  • getAllUsers():用于获取所有用户信息。
  • getUserById(Long id):根据用户ID获取特定用户信息。

6. 运行和测试项目

完成了以上步骤后,可以运行项目并测试接口,确认功能实现情况。

6.1 启动项目

运行Spring Boot项目的主类DemoApplication中的main方法,启动应用程序。

6.2 测试接口

可以使用Postman等工具测试API接口。例如,发送GET请求至http://localhost:8080/users即可获取所有用户信息,发送GET请求至http://localhost:8080/users/{id}则可以获取指定用户信息。

7. 总结

通过本教程,我们完成了在Spring Boot中集成MyBatis的全过程。从项目依赖配置、实体类、Mapper接口的创建,到Service层和Controller层的开发,逐步实现了数据库的基本操作。通过这种结构化的分层设计,项目代码清晰,业务逻辑和数据操作实现了分离,易于维护和扩展。MyBatis结合Spring Boot的方式能够高效地完成数据持久化操作,希望这篇文章能帮助大家更好地理解和使用这两者的集成。


http://www.niftyadmin.cn/n/5739492.html

相关文章

Chrome 130 版本开发者工具(DevTools)更新内容

Chrome 130 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、网络&#xff08;Network&#xff09;面板更新 1. 重新定义网络过滤器 网络面板获新增了一些过滤条件&#xff0c;这些过滤条件是根据反馈重新设计的&#xff0c;特定于类型的过滤条件保持不变&…

【零售和消费品&厨房】厨房电器检测系统源码&数据集全套:改进yolo11-rmt

改进yolo11-iRMB等200全套创新点大全&#xff1a;厨房电器检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.03 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视频可…

达梦数据库和人大金仓数据库对数据库的运行查看情况

1、查看服务器自身资源使用情况 查看内存&#xff1a; free -g 查看整体负载: top 查看磁盘io &#xff1a; iostat -d -x 1 2、查看数据库占用服务器内存情况,登录DM管理工具&#xff0c;达梦数据库使用的内存大致等于 BUFFER MPOOL&#xff0c;对应的 SQL 语句为&#xff1a…

文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题

三、对引理 24.10 的证明进行改善&#xff0c;使其可以处理最短路径权重为 ∞ ∞ ∞ 和 − ∞ -∞ −∞ 的情况。引理 24.10(三角不等式)的内容是&#xff1a;设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图&#xff0c;其权重函数由 w : E → R w:E→R w:E→R 给出&…

Spring Boot 与 Vue 共筑二手书籍交易卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

【数据结构】树-二叉树(链式)

&#x1f343; 如果觉得本系列文章内容还不错&#xff0c;欢迎订阅&#x1f6a9; &#x1f38a;个人主页:小编的个人主页 &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ✌️ &#x1f91e; &#x1f91f; &#x1f918; &#x1f919; &#x1f448; &…

【AI】【一般认识】雷·库兹韦尔的奇点预言:2045年人工智能将超越人类智能

雷库兹韦尔&#xff08;Ray Kurzweil&#xff09;是著名的未来学家和发明家&#xff0c;他提出的“奇点”概念在科技界引起了广泛关注。他预测&#xff0c;到2045年&#xff0c;人工智能&#xff08;AI&#xff09;将超越人类智能&#xff0c;进入所谓的“技术奇点”时代。在这…

Ubuntu开启FTP与SSH服务

在配置开发环境时&#xff0c;这两个配置感觉是最有用的&#xff0c;开启FTP服务可以将远程linux上的文件映射到Windows上&#xff0c;不管是使用虚拟机还是嵌入式linux设备&#xff0c;特别在开发写代码的时候&#xff0c;映射到Windows上使用VS code打开编写比在linux上编写舒…