spring boot3.4.3+MybatisPlus3.5.5+swagger-ui2.7.0

使用 MyBatis-Plus 操作 books 表。我们将实现以下功能:

  1. 创建实体类 Book

  2. 创建 Mapper 接口 BookMapper

  3. 创建 Service 层 BookService 和 BookServiceImpl

  4. 创建 Controller 层 BookController

  5. 配置 MyBatis-Plus 和数据库连接。

1. 项目结构

src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           ├── DemoApplication.java
│   │           ├── entity
│   │           │   └── Book.java
│   │           ├── mapper
│   │           │   └── BookMapper.java
│   │           ├── service
│   │           │   ├── BookService.java
│   │           │   └── impl
│   │           │       └── BookServiceImpl.java
│   │           └── controller
│   │               └── BookController.java
│   └── resources
│       └── application.properties
└── test
    └── java
        └── com
            └── example
                └── DemoApplicationTests.java

2. 添加依赖

在 pom.xml 中添加 MyBatis-Plus 和 MySQL 依赖:

POP.XML
 



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        3.4.3
         
    
    com.example
    demo3
    0.0.1-SNAPSHOT
    demo3
    demo3
    
    
        
    
    
        
    
    
        
        
        
        
    
    
        23
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        


      
        
            org.hibernate.validator
            hibernate-validator
            8.0.0.Final 
        

        
            jakarta.validation
            jakarta.validation-api
            3.0.2 
        

        
            org.glassfish
            jakarta.el
            4.0.2 
        
      
        

        
        
            org.springdoc
            springdoc-openapi-starter-webmvc-ui
            2.7.0
        

        
            org.projectlombok
            lombok
            1.18.30 
        


        
        
            com.baomidou
            mybatis-plus-spring-boot3-starter
            3.5.5
        

        
        
            com.mysql
            mysql-connector-j
        


        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


3. 配置数据库和 MyBatis-Plus

在 application.properties 中配置数据库连接和 MyBatis-Plus:

application.properties

spring.application.name=demo3

spring.datasource.url=jdbc:mysql://192.168.1.10:3306/databasename**?useSSL=false&serverTimezone=UTC
spring.datasource.username=user***
spring.datasource.password=psd***
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver


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

# OpenAPI 配置
#springdoc.swagger-ui.path=/swagger-ui.html

启动 MyBatis-Plus 的分页功能 

MybatisPlusConfig.java
package com.example.demo.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

4. 创建实体类

使用 MyBatis-Plus 的注解定义实体类。

Book.java

package com.example.demo.entity;

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

@Data // 使用 Lombok 自动生成 getter 和 setter 方法
@TableName("books") // 指定数据库表名
public class Book {
    @TableId(type = IdType.AUTO) // 主键自增
    private Long id;
    private String name;
    private String author;
}

5. 创建 Mapper 接口

继承 MyBatis-Plus 的 BaseMapper 接口,自动获得 CRUD 方法。

BookMapper.java
package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.Book;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface BookMapper extends BaseMapper {
    // 无需手动编写 CRUD 方法,BaseMapper 已提供
}

6. 创建 Service 层

使用 MyBatis-Plus 的 IService 和 ServiceImpl 简化 Service 层代码。

BookService.java
package com.example.service;

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

public interface BookService extends IService {
    // 可以在此定义自定义方法
}
BookServiceImpl.java
package com.example.service.impl;

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

@Service
public class BookServiceImpl extends ServiceImpl implements BookService {
    // 无需手动实现 CRUD 方法,ServiceImpl 已提供
}

7. 创建 Controller 层

在控制器中调用 Service 层的方法。

BookController.java

package com.example.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.Book;
import com.example.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/books")
public class BookController {

    @Autowired
    private BookService bookService;

    // 获取所有书籍
    @GetMapping
    public List findAll() {
        return bookService.list();
    }

    // 根据 ID 获取书籍
    @GetMapping("/{id}")
    public Book findById(@PathVariable Long id) {
        return bookService.getById(id);
    }

    // 创建书籍
    @PostMapping
    public void insert(@RequestBody Book book) {
        bookService.save(book);
    }

    // 更新书籍
    @PutMapping("/{id}")
    public void update(@PathVariable Long id, @RequestBody Book book) {
        book.setId(id);
        bookService.updateById(book);
    }

    // 删除书籍
    @DeleteMapping("/{id}")
    public void delete(@PathVariable Long id) {
        bookService.removeById(id);
    }

    // 分页查询书籍
    @GetMapping("/page")
    public IPage getBooksByPage(
            @RequestParam(defaultValue = "1") int pageNum, // 默认第 1 页
            @RequestParam(defaultValue = "10") int pageSize // 默认每页 10 条
    ) {
        Page page = new Page<>(pageNum, pageSize);
        return bookService.page(page);
    }

    // 根据名称搜索书籍
    @GetMapping("/search")
    public List search(@RequestParam String keyword) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name", keyword).or().like("author", keyword);
        return bookService.list(queryWrapper);
    }
}

8. 创建数据库表

在 MySQL 中创建 books 表:

CREATE TABLE books (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    author VARCHAR(100) NOT NULL
);

9. 运行项目

启动项目后,可以使用以下 API 进行测试:

  • 获取所有书籍

    bash

    复制

    curl http://localhost:8080/books
  • 根据 ID 获取书籍

    bash

    复制

    curl http://localhost:8080/books/1
  • 创建书籍

    bash

    复制

    curl -X POST -H "Content-Type: application/json" -d '{"name": "Spring Boot in Action", "author": "Craig Walls"}' http://localhost:8080/books
  • 更新书籍

    bash

    复制

    curl -X PUT -H "Content-Type: application/json" -d '{"name": "Spring Boot in Action (2nd Edition)", "author": "Craig Walls"}' http://localhost:8080/books/1
  • 删除书籍

    bash

    复制

    curl -X DELETE http://localhost:8080/books/1
  • 分页查询书籍

    bash

    复制

    curl http://localhost:8080/books/page?pageNum=1&pageSize=5
  • 搜索书籍

    bash

    复制

    curl http://localhost:8080/books/search?keyword=Spring

你可能感兴趣的:(spring,boot,后端,java)