授课语音

图书网站利用 MyBatis-Plus 实现数据的增删改查操作

1. MyBatis-Plus 概述

MyBatis-Plus 是在 MyBatis 的基础上进行扩展的 ORM 框架,旨在简化 MyBatis 的配置与操作,提供了丰富的 CRUD 操作,减少了大量样板代码。它的主要特点包括:

  • 自动生成 CRUD 操作的代码。
  • 提供了多种查询条件的构造器。
  • 提供了代码生成器,可以根据数据库表自动生成实体类、Mapper 接口和 XML 配置文件。

2. 图书网站功能需求

在图书网站中,我们需要实现基本的增删改查(CRUD)功能,这些功能能够帮助我们管理图书信息,包括图书名称、作者、价格、库存等字段。

3. MyBatis-Plus 的集成

3.1 依赖配置

首先,我们需要在 pom.xml 中添加 MyBatis-Plus 相关的依赖。

<dependencies>
    <!-- MyBatis-Plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.0</version> <!-- 可根据需要调整版本 -->
    </dependency>
    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>
</dependencies>

3.2 MyBatis-Plus 配置

application.propertiesapplication.yml 文件中,进行数据库连接和 MyBatis-Plus 配置。

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/bookstore?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

# MyBatis-Plus 配置
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.type-aliases-package=com.example.bookstore.entity

4. 实体类和 Mapper 接口的创建

4.1 实体类

我们为图书创建一个 Book 实体类,并使用 MyBatis-Plus 提供的注解进行映射。

package com.example.bookstore.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("book")  // 指定表名
public class Book {

    @TableId // 主键注解
    private Long id;
    private String title;   // 图书名称
    private String author;  // 作者
    private Double price;   // 价格
    private Integer stock;  // 库存
}

4.2 Mapper 接口

Mapper 接口继承 MyBatis-Plus 提供的 BaseMapper 接口,这样就可以直接使用其提供的增删改查方法。

package com.example.bookstore.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bookstore.entity.Book;

public interface BookMapper extends BaseMapper<Book> {
    // 可以在此定义自定义的查询方法
}

4.3 Service 层

在 Service 层,我们调用 BookMapper 提供的 CRUD 方法进行数据操作。

package com.example.bookstore.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.bookstore.entity.Book;

public interface BookService extends IService<Book> {
    // 可以添加自定义业务逻辑
}

4.4 Service 实现类

package com.example.bookstore.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.bookstore.entity.Book;
import com.example.bookstore.mapper.BookMapper;
import com.example.bookstore.service.BookService;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
    // ServiceImpl 提供了常用的增删改查方法,可以直接使用
}

5. 实现增删改查功能

5.1 新增图书

BookService 中,我们可以使用 save() 方法新增图书。

package com.example.bookstore.controller;

import com.example.bookstore.entity.Book;
import com.example.bookstore.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BookController {

    @Autowired
    private BookService bookService;

    // 新增图书
    @PostMapping("/book")
    public String addBook(@RequestBody Book book) {
        boolean success = bookService.save(book);
        return success ? "新增成功" : "新增失败";
    }
}

解释:

  • save() 方法会自动将 Book 对象保存到数据库中。

5.2 查询图书

使用 MyBatis-Plus 提供的 list() 方法查询所有图书。

@GetMapping("/books")
public List<Book> getAllBooks() {
    return bookService.list();
}

解释:

  • list() 方法返回所有图书的列表。

5.3 修改图书

使用 updateById() 方法更新图书信息。

@PutMapping("/book/{id}")
public String updateBook(@PathVariable Long id, @RequestBody Book book) {
    book.setId(id);  // 设置要修改的图书的 ID
    boolean success = bookService.updateById(book);
    return success ? "更新成功" : "更新失败";
}

解释:

  • updateById() 方法根据主键更新指定图书的记录。

5.4 删除图书

使用 removeById() 方法删除图书。

@DeleteMapping("/book/{id}")
public String deleteBook(@PathVariable Long id) {
    boolean success = bookService.removeById(id);
    return success ? "删除成功" : "删除失败";
}

解释:

  • removeById() 方法根据主键删除指定的图书记录。

6. 总结

通过 MyBatis-Plus,我们可以非常方便地进行数据库的增删改查操作,避免了手动编写大量的 SQL 语句。MyBatis-Plus 提供的 BaseMapper 接口和 ServiceImpl 类,简化了开发工作,极大提高了开发效率。在本课中,我们学习了如何在图书网站中利用 MyBatis-Plus 实现增删改查操作,包括如何配置 MyBatis-Plus、如何编写实体类、Mapper 接口以及如何实现常见的 CRUD 功能。

通过这些基本操作,您可以轻松构建起一个具有基本数据操作功能的图书网站。

去1:1私密咨询

系列课程: