在现代 Java 开发中,Spring Boot 和 MyBatis 是两种非常流行的框架,二者的结合可以大大提高我们开发项目的效率和可维护性。本文将介绍如何将 Spring Boot 3 与 MyBatis 整合,并提供完整的代码示例。

1. 项目依赖

首先,我们需要创建一个 Spring Boot 项目。可以使用 Spring Initializr(https://start.spring.io/)来生成项目基础结构。在生成时,请选择以下依赖项:

  • Spring Web
  • MyBatis Framework
  • MySQL Driver(或其他数据库驱动,根据您的需求)

生成后,您将得到一个包含 pom.xml 的 Maven 项目。在 pom.xml 中,确保添加 MyBatis 和数据库相关的依赖:

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

    <!-- MyBatis Spring Boot Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>3.0.4</version>
    </dependency>

    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>

    <!-- Spring Boot Starter Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 配置数据源

src/main/resources/application.ymlapplication.properties 中添加数据库连接信息。例如,使用 application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  mybatis:
    mapper-locations: classpath*:mapper/**/*.xml
    configuration:
      map-underscore-to-camel-case: true

3. 创建实体类和Mapper接口

假设我们有一个简单的用户表 user,其字段为 id, name, email

实体类

创建一个 User 实体类:

package com.example.demo.model;

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

    // Getters and Setters
}

Mapper接口

创建一个 Mapper 接口 UserMapper

package com.example.demo.mapper;

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

import java.util.List;

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

4. 创建Mapper XML文件

src/main/resources/mapper 下创建 UserMapper.xml 文件,并添加 SQL 语句:

<mapper namespace="com.example.demo.mapper.UserMapper">

    <select id="findAll" resultType="com.example.demo.model.User">
        SELECT * FROM user
    </select>

    <select id="findById" parameterType="long" resultType="com.example.demo.model.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="com.example.demo.model.User">
        INSERT INTO user (name, email) VALUES (#{name}, #{email})
    </insert>

    <update id="update" parameterType="com.example.demo.model.User">
        UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>

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

</mapper>

5. 创建服务和控制器

创建一个服务类 UserService

package com.example.demo.service;

import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private final UserMapper userMapper;

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

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

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

    public void insert(User user) {
        userMapper.insert(user);
    }

    public void update(User user) {
        userMapper.update(user);
    }

    public void delete(Long id) {
        userMapper.delete(id);
    }
}

最后,创建一个控制器 UserController

package com.example.demo.controller;

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

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

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

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

    @PostMapping
    public void createUser(@RequestBody User user) {
        userService.insert(user);
    }

    @PutMapping
    public void updateUser(@RequestBody User user) {
        userService.update(user);
    }

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

6. 运行项目

至此,Spring Boot 3 与 MyBatis 的整合已完成。运行应用程序后,您可以通过 GET /users 端口访问所有用户,POST /users 端口添加用户等。

总结来说,Spring Boot 3 和 MyBatis 的结合,不仅简化了配置过程,还使得数据访问变得更加便捷与高效。希望本文能够帮助到您在实际开发中有效使用这两个强大的框架。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部