公司名称邮箱大全,南昌百度推广优化,百度最新秒收录方法2021,seo推广有用吗使用 MyBatis-Plus 操作 books 表。我们将实现以下功能#xff1a; 创建实体类 Book。 创建 Mapper 接口 BookMapper。 创建 Service 层 BookService 和 BookServiceImpl。 创建 Controller 层 BookController。 配置 MyBatis-Plus 和数据库连接。
1. 项目结构
src
├─…使用 MyBatis-Plus 操作 books 表。我们将实现以下功能 创建实体类 Book。 创建 Mapper 接口 BookMapper。 创建 Service 层 BookService 和 BookServiceImpl。 创建 Controller 层 BookController。 配置 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
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.4.3/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.example/groupIdartifactIddemo3/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo3/namedescriptiondemo3/descriptionurl/licenseslicense//licensesdevelopersdeveloper//developersscmconnection/developerConnection/tag/url//scmpropertiesjava.version23/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- jakarta相关依赖 --dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactIdversion8.0.0.Final/version !-- 或者选择一个适合Spring Boot 3.x的最新版本 --/dependencydependencygroupIdjakarta.validation/groupIdartifactIdjakarta.validation-api/artifactIdversion3.0.2/version !-- 或者更高版本确保与Spring Boot 3.x兼容 --/dependencydependencygroupIdorg.glassfish/groupIdartifactIdjakarta.el/artifactIdversion4.0.2/version !-- 提供EL表达式语言支持 --/dependency!-- jakarta相关依赖 --!-- swagger-ui依赖 --dependencygroupIdorg.springdoc/groupIdartifactIdspringdoc-openapi-starter-webmvc-ui/artifactIdversion2.7.0/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.30/version !-- 或者选择一个适合Spring Boot 3.x的最新版本 --/dependency!-- MybatisPlus依赖 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.5/version/dependency!-- MYSQL依赖 --dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3. 配置数据库和 MyBatis-Plus
在 application.properties 中配置数据库连接和 MyBatis-Plus
application.properties spring.application.namedemo3spring.datasource.urljdbc:mysql://192.168.1.10:3306/databasename**?useSSLfalseserverTimezoneUTC
spring.datasource.usernameuser***
spring.datasource.passwordpsd***
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver# MyBatis-Plus 配置
mybatis-plus.mapper-locationsclasspath:mapper/*.xml
mybatis-plus.type-aliases-packagecom.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 {Beanpublic 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 BaseMapperBook {// 无需手动编写 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 IServiceBook {// 可以在此定义自定义方法
}
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 ServiceImplBookMapper, Book 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 {Autowiredprivate BookService bookService;// 获取所有书籍GetMappingpublic ListBook findAll() {return bookService.list();}// 根据 ID 获取书籍GetMapping(/{id})public Book findById(PathVariable Long id) {return bookService.getById(id);}// 创建书籍PostMappingpublic 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 IPageBook getBooksByPage(RequestParam(defaultValue 1) int pageNum, // 默认第 1 页RequestParam(defaultValue 10) int pageSize // 默认每页 10 条) {PageBook page new Page(pageNum, pageSize);return bookService.page(page);}// 根据名称搜索书籍GetMapping(/search)public ListBook search(RequestParam String keyword) {QueryWrapperBook 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?pageNum1pageSize5 搜索书籍 bash 复制 curl http://localhost:8080/books/search?keywordSpring