使用Spring Boot集成MyBatis

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何在Spring Boot项目中集成MyBatis,实现持久化操作与数据库的交互。MyBatis是一个优秀的持久层框架,结合Spring Boot能够快速、高效地开发数据库访问功能。

1. 集成MyBatis

在Spring Boot项目中集成MyBatis,首先需要引入相应的依赖。在pom.xml中添加以下依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

这里引入了mybatis-spring-boot-starter用于集成MyBatis和Spring Boot,spring-boot-starter-jdbc用于支持JDBC操作,以及MySQL数据库的驱动。

2. 配置数据源和MyBatis

application.propertiesapplication.yml中配置数据源和MyBatis相关属性:

spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=password

mybatis.mapper-locations=classpath*:mapper/*.xml
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

这里配置了数据库连接信息和MyBatis的Mapper文件路径。

3. 编写Mapper接口和Mapper XML文件

创建一个MyBatis的Mapper接口和对应的Mapper XML文件来定义SQL语句和映射关系。假设我们有一个User表,示例代码如下:

package cn.juwatech.mapper;

import cn.juwatech.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {

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

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

    @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insert(User user);

    @Update("UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}")
    void update(User user);

    @Delete("DELETE FROM users WHERE id = #{id}")
    void delete(Long id);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

上述代码中,我们定义了对User表进行增删改查的操作,使用了注解方式配置SQL语句。

4. 创建Service层

编写一个Service层来调用Mapper接口中定义的方法,处理业务逻辑:

package cn.juwatech.service;

import cn.juwatech.entity.User;
import cn.juwatech.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class UserService {

    @Autowired
    private UserMapper userMapper;

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

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

    public void saveUser(User user) {
        if (user.getId() == null) {
            userMapper.insert(user);
        } else {
            userMapper.update(user);
        }
    }

    public void deleteUser(Long id) {
        userMapper.delete(id);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.

在Service层中,我们注入了UserMapper,并定义了对应的业务方法,用于处理用户信息的增删改查操作。

5. 编写Controller层

最后,编写一个Controller层来处理HTTP请求,并调用Service层的方法进行业务处理:

package cn.juwatech.controller;

import cn.juwatech.entity.User;
import cn.juwatech.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.findAllUsers();
    }

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

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

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

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable("id") Long id) {
        userService.deleteUser(id);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.

在Controller层中,我们使用了@RestController@RequestMapping注解来定义RESTful风格的接口,通过调用UserService来处理业务逻辑。

6. 总结

本文详细介绍了如何在Spring Boot项目中集成MyBatis,通过配置依赖、数据源、Mapper接口和XML文件,实现了基本的数据库操作。通过示例代码演示了如何定义Mapper接口、编写SQL语句和配置Service层、Controller层,完整展示了Spring Boot集成MyBatis的开发流程和最佳实践。