返回

MyBatis-Plus 玩转 MySQL,玩转 Java 世界的数据持久化!

后端

MyBatis-Plus:将数据持久化提升到新的高度

简介

在 Java 开发中,数据持久化至关重要。MyBatis-Plus 作为一款出色的 ORM 框架,因其强大而便利的功能而备受推崇。本博客将深入探讨如何将 MyBatis-Plus 无缝集成到 SpringBoot 项目中,连接 MySQL 数据库,让你在 Java 应用程序中轻松管理数据。

搭建项目环境

首先,你需要设置一个 SpringBoot 项目环境。若尚未完成,请参考官方文档或其他教程创建项目。

添加依赖

在 pom.xml 文件中,引入以下依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

配置数据源

在 application.yml 文件中,配置数据源连接信息:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

创建实体类

实体类是与数据库表一一对应的 Java 类,表示数据库中的数据。以 User 表为例,我们创建 User 实体类:

public class User {
    private Integer id;
    private String name;
    private Integer age;

    // 省略 getter 和 setter 方法
}

创建 Mapper 接口

Mapper 接口由 MyBatis-Plus 提供,用于定义数据库操作。以 User 表为例,我们创建 UserMapper 接口:

public interface UserMapper extends BaseMapper<User> {

}

创建 Service 接口

Service 接口是业务逻辑层的接口,定义业务逻辑。以 User 表为例,我们创建 UserService 接口:

public interface UserService {

    List<User> list();

    void save(User user);

    void update(User user);

    void delete(Integer id);

}

创建 Service 实现类

Service 实现类是业务逻辑层的实现类,实现业务逻辑。以 User 表为例,我们创建 UserServiceImpl 类:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> list() {
        return userMapper.selectList(null);
    }

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

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

    @Override
    public void delete(Integer id) {
        userMapper.deleteById(id);
    }

}

创建 Controller

Controller 是控制层的组件,接收用户请求并调用 Service 层方法处理业务逻辑。以 User 表为例,我们创建 UserController 类:

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

    @Autowired
    private UserService userService;

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

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

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

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

}

测试

启动项目,在浏览器中访问以下 URL:

  • http://localhost:8080/user/list
  • http://localhost:8080/user/save
  • http://localhost:8080/user/update
  • http://localhost:8080/user/delete/{id}

若一切正常,你会看到相应的结果。

常见问题解答

1. 如何配置 MyBatis-Plus 分页插件?

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-pagehelper</artifactId>
    <version>3.5.2</version>
</dependency>

2. 如何使用 MyBatis-Plus 的乐观锁?

使用 @Version 注解实体类的 version 属性。

3. 如何在 MyBatis-Plus 中使用逻辑删除?

配置全局逻辑删除字段,并在实体类中添加 @TableLogic 注解。

4. 如何在 MyBatis-Plus 中实现级联操作?

使用 @TableField(condition="...") 注解指定外键列。

5. 如何使用 MyBatis-Plus 的代码生成器?

使用 mybatis-plus-generator 项目,并在 application.yml 中配置相关属性。