Springboot Mybatis整合--xml方式

落日余晖 2024-07-11 ⋅ 11 阅读

介绍

在 Java 项目中,Spring Boot 是一款非常受欢迎的框架,而 MyBatis 是一款轻量级的持久层框架。它们的结合可以极大地简化数据库操作的开发,提高开发效率。本文将介绍如何在 Spring Boot 项目中使用 MyBatis,并以 xml 的形式进行配置。

环境配置

在开始整合之前,需要确保已经配置好以下环境:

  • JDK 1.8+
  • Maven
  • Spring Boot
  • MyBatis

搭建项目

首先,我们需要创建一个 Spring Boot 项目。可以使用 Spring Initializer(https://start.spring.io/)快速生成项目骨架,包括 Maven 配置文件、源代码目录结构等。

导入依赖

打开项目的 pom.xml 文件,在 <dependencies> 标签中添加以下依赖:

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

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

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>
</dependencies>

这里我们引入了 Spring Boot Web Starter、MyBatis Starter 和 MySQL 驱动的依赖。

配置数据源

src/main/resources 目录下创建 application.properties 文件,并添加以下配置:

# MySQL 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/db_name
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis 配置
mybatis.mapper-locations=classpath:mappers/*.xml
mybatis.type-aliases-package=com.example.models

将上述配置中的 db_nameusernamepassword 改为你自己的数据库配置。

创建数据模型和Mapper接口

src/main/java/com/example/models 目录下,创建一个名为 User 的 Java 类,作为数据模型:

package com.example.models;

public class User {
    private int id;
    private String name;
    private int age;
    
    // 省略 getter 和 setter 方法
}

src/main/java/com/example/mappers 目录下,创建一个名为 UserMapper 的 Java 接口,作为 Mapper:

package com.example.mappers;

import com.example.models.User;

import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(int id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}

创建Mapper.xml文件

src/main/resources/mappers 目录下,创建一个名为 UserMapper.xml 的 XML 文件,对应上面创建的 UserMapper 接口。

<?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.mappers.UserMapper">
    <resultMap id="userResultMap" type="com.example.models.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
    </resultMap>

    <select id="getAllUsers" resultMap="userResultMap">
        SELECT * FROM users
    </select>

    <select id="getUserById" parameterType="int" resultMap="userResultMap">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <insert id="insertUser" parameterType="com.example.models.User">
        INSERT INTO users(name, age) VALUES(#{name}, #{age})
    </insert>

    <update id="updateUser" parameterType="com.example.models.User">
        UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        DELETE FROM users WHERE id = #{id}
    </delete>
</mapper>

这里的 namespace 属性值必须与上面的接口类全路径相同。

编写Service和Controller

src/main/java/com/example/services 目录下,创建一个名为 UserService 的 Java 类,用于处理业务逻辑:

package com.example.services;

import com.example.mappers.UserMapper;
import com.example.models.User;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private UserMapper userMapper;

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

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

    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }

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

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

    public void deleteUser(int id) {
        userMapper.deleteUser(id);
    }
}

src/main/java/com/example/controllers 目录下,创建一个名为 UserController 的 Java 类,用于处理控制层逻辑:

package com.example.controllers;

import com.example.models.User;
import com.example.services.UserService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

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

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

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

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

    @PostMapping("/")
    public void insertUser(@RequestBody User user) {
        userService.insertUser(user);
    }

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

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

运行项目

现在,可以在终端中进入项目根目录,运行以下 Maven 命令启动项目:

$ mvn spring-boot:run

项目启动后,可以通过访问 http://localhost:8080/users/ 来进行接口测试。

总结

通过使用 Spring Boot 和 MyBatis 的结合,我们可以很方便地进行数据库操作。在本文中,我们以 xml 的方式配置 MyBatis,并通过示例代码演示了如何进行增删改查等操作。希望本文对你理解 Spring Boot 和 MyBatis 的整合有所帮助。


全部评论: 0

    我有话说: