Spring Boot 是一种用于简化 Java 开发的框架,特别是构建企业级应用程序。在与持久化层的交互方面,MyBatis 是一种非常流行的持久层框架,它支持定制 SQL、存储过程以及高级映射。本文将介绍如何在 Spring Boot 项目中集成 MyBatis,并通过示例展示其基本用法。

1. 创建 Spring Boot 项目

我们可以使用 Spring Initializr 来生成一个新的 Spring Boot 项目。在选择依赖时,确保添加以下模块:

  • Spring Web
  • MyBatis Framework
  • MySQL Driver(或者其他你所使用的数据库驱动)

2. 配置 application.yml

在项目的 src/main/resources 目录下,打开或创建 application.yml 配置文件,填写数据库的连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  mybatis:
    mapper-locations: classpath:mapper/*.xml
    type-aliases-package: com.example.demo.model

3. 创建数据库表

假设我们有一个用户表 user,其 SQL 可以如下创建:

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL
);

4. 创建实体类

com.example.demo.model 包中创建一个 User 实体类:

package com.example.demo.model;

public class User {
    private Integer id;
    private String username;
    private String password;

    // Getters and Setters
    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

5. 创建 Mapper 接口

com.example.demo.mapper 包中,创建一个 UserMapper 接口:

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();

    User findById(Integer id);

    void insert(User user);

    void update(User user);

    void delete(Integer id);
}

6. 创建 Mapper XML 文件

src/main/resources/mapper 目录下,创建 UserMapper.xml 文件:

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

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

    <update id="update">
        UPDATE user SET username = #{username}, password = #{password} WHERE id = #{id}
    </update>

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

7. 创建 Service 层

com.example.demo.service 包中创建 UserService 类,处理业务逻辑:

package com.example.demo.service;

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

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

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

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

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

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

    public void deleteUser(Integer id) {
        userMapper.delete(id);
    }
}

8. 创建 Controller 层

com.example.demo.controller 包中创建 UserController 类:

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();
    }

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

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

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

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

9. 启动应用并测试

现在,你可以通过 Spring Boot 的主程序类启动应用。访问 http://localhost:8080/users 可以获取所有用户数据,使用 HTTP POST、PUT、DELETE 等方法可以进行相应的增、删、改操作。

总结

通过上面的步骤,我们简单地展示了在 Spring Boot 中如何集成 MyBatis,并使用它进行基本的数据库操作。MyBatis 的灵活性和强大的 SQL 映射能力,使得它成为 Java 开发中一个非常优秀的选择。希望本文能够帮助你更好地理解和使用 Spring Boot 与 MyBatis 的结合。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部