在Spring Boot应用中集成MyBatis与MyBatis-Plus

简介: 在Spring Boot应用中集成MyBatis与MyBatis-Plus

在Spring Boot应用中集成MyBatis与MyBatis-Plus,并添加分页插件,可以通过以下步骤完成:

 

### 1. 添加依赖

 

首先,确保在`pom.xml`文件中添加MyBatis和MyBatis-Plus的依赖:

```xml
    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    2.2.0
 
    com.baomidou
    mybatis-plus-boot-starter
    3.4.3.3
```

### 2. 配置数据源和MyBatis

 

在`application.properties`或`application.yml`中配置数据源和MyBatis的相关信息:

```properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
# MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
```

### 3. 添加MyBatis-Plus分页插件配置

 

在Spring Boot的配置类中,配置MyBatis-Plus的分页插件。

```java
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
@MapperScan("com.example.mapper") // 扫描Mapper接口所在的包
public class MyBatisPlusConfig {
 
    // 注册分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
```

### 4. 编写Mapper接口和XML映射文件

 

编写对应的Mapper接口和XML映射文件,定义数据库操作和SQL语句。例如,一个简单的示例:

 

**Mapper接口:**

```java
package com.example.mapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.User;
 
public interface UserMapper extends BaseMapper {
}
```
 
**XML映射文件 `UserMapper.xml`:**
 
```xml
    
    
        
    
    
            SELECT * FROM user    
    
```

### 5. 使用分页查询

 

在Service层或Controller层中使用MyBatis-Plus提供的`Page`类进行分页查询。

 

**Service层示例:**

 

```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class UserService {
 
    @Autowired
    private UserMapper userMapper;
 
    public IPage getUserPage(Page page) {
        return userMapper.selectPage(page, null);
    }
}
```

 

**Controller层示例:**

 

```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
@RestController
@RequestMapping("/users")
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @GetMapping("/list")
    public IPage getUserList(@RequestParam(defaultValue = "1") Integer pageNum,
                                   @RequestParam(defaultValue = "10") Integer pageSize) {
        return userService.getUserPage(new Page<>(pageNum, pageSize));
    }
}
```

### 总结

 

通过以上步骤,你就可以在Spring Boot项目中成功集成MyBatis和MyBatis-Plus,并使用MyBatis-Plus提供的分页插件进行分页查询操作。记得配置数据源、定义Mapper接口、XML映射文件,以及在配置类中注册分页插件,这样就可以方便地实现数据库分页查询功能。

 

补充一些关于使用MyBatis-Plus的分页插件的注意事项和额外的配置选项:

 

### 配置选项

 

1. **分页插件的其他配置项:**

  - 可以通过`PaginationInterceptor`的构造函数或者setter方法设置其他配置项,如数据库类型、每页大小、是否优化Count SQL等。

 

2. **自定义分页SQL:**

  - 如果需要自定义分页SQL,可以使用`PaginationInterceptor`的`SqlParserHandler`接口来实现自定义分页逻辑。

 

### 使用示例

 

#### 自定义分页查询

```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class UserService {
 
    @Autowired
    private UserMapper userMapper;
 
    public IPage getUserPage(Page page, String username) {
        return userMapper.selectPage(page, new QueryWrapper().eq("username", username));
    }
}
```

#### 带条件查询的分页

```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class UserService {
 
    @Autowired
    private UserMapper userMapper;
 
    public IPage getUserPage(Page page, String username) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username", username); // 查询条件:用户名等于指定值
 
        return userMapper.selectPage(page, queryWrapper);
    }
}
```

### 性能优化

 

1. **Count SQL优化:**

  - MyBatis-Plus默认会对分页查询的总数进行Count查询,可以通过设置`optimizeCountSql`参数为false来关闭优化。

 

2. **大数据量分页优化:**

  - 对于大数据量分页,建议在查询条件中尽量使用索引,避免全表扫描,以提高分页查询的性能。

 

### 分页插件的扩展

 

如果需要更高级的分页功能或者定制化的需求,可以考虑自定义实现分页插件,或者结合其他缓存、异步查询等技术来优化分页查询的性能和用户体验。

目录
相关文章
|
1月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
287 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
84 1
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
63 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
1月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
1月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
261 11
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
41 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
1月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
123 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
2月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
1月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
88 0