Mybatis Plus 3.4.0分页拦截器的用法,解说mybatis plus 3.4.0的新内置插件

本文详细介绍了MybatisPlus3.4.0版本中新增的内置插件,包括分页插件、多租户插件、动态表名插件等,并提供了配置示例和应用案例。

Mybatis Plus 3.4.0

新增了如下地内置插件:
主体插件: MybatisPlusInterceptor
该插件内部插件集:

  • 分页插件: PaginationInnerInterceptor
  • 多租户插件: TenantLineInnerInterceptor
  • 动态表名插件: DynamicTableNameInnerInterceptor
  • 乐观锁插件: OptimisticLockerInnerInterceptor
  • sql性能规范插件: IllegalSQLInnerInterceptor
  • 防止全表更新与删除插件: BlockAttackInnerInterceptor

spring cloud alibaba配置分页插件

@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}

更多详细的教程,请参见官方地址:https://mybatis.plus/guide/interceptor.html#%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F-%E4%BB%A5%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6%E4%B8%BE%E4%BE%8B

应用案例

Matecloud就是采用了Mybatis plus 3.4.0的版本作为应用场景,具体参见:
https://github.com/matevip/matecloud

<think>好的,我现在需要帮助用户了解如何在Spring中使用MyBatis-Plus实现分页功能。用户提到了示例代码和教程,所以我要确保步骤清晰,代码正确,并且符合他们提供的引用内容。 首先,用户提供的引用中有提到PaginationInnerInterceptor替换了旧版的PaginationInterceptor,因此我需要强调版本的使用方法。引用3中的配置类示例是正确的,应该作为配置部分的重点。我需要分步骤说明,从添加依赖开始,到配置类、服务层和控制器层的实现。 接下来,我需要检查用户提供的代码示例是否符合MyBatis-Plus 3.4以上的版本,因为旧版和版的配置不同。确保代码中的MybatisPlusInterceptor和PaginationInnerInterceptor正确引入,没有使用过时的类。 然后,考虑到用户可能需要分页查询的实际应用,比如在Service中调用Page对象,使用selectPage方法,这里需要展示如何创建Page实例并传递分页参数。同时,控制器的示例应该展示如何接收当前页和每页数量参数,并返回分页结果。 另外,用户可能需要知道如何验证分页是否生效,比如在日志中查看SQL语句是否包含LIMIT,或者检查返回的数据结构是否包含total和records字段。这部分可以作为验证步骤加入,帮助用户确认配置正确。 最后,生成相关问题时,需要涵盖配置步骤、版变化、分页参数处理以及常见问题排查,这些都是用户可能遇到的后续疑问。确保每个问题都能在之前的解答中找到相关线索,或者需要进一步扩展的知识点。 总结步骤: 1. 添加MyBatis-Plus依赖,确保版本正确。 2. 创建配置类,使用MybatisPlusInterceptor添加PaginationInnerInterceptor。 3. 在Mapper接口继承BaseMapper,以便使用内置分页方法。 4. 在Service层创建Page对象,调用selectPage方法。 5. 控制器接收参数并返回分页结果。 6. 验证分页功能是否生效。 需要注意避免提到旧版插件,正确引用用户提供的引用内容,特别是引用3中的配置示例。同时,代码部分要使用正确的语法,比如Java的注解和类名,防止拼写错误。最后,确保回答结构清晰,步骤详细,方便用户跟随操作。</think>在Spring Boot中整合MyBatis-Plus实现分页功能,需遵循以下步骤: ### 1. 添加依赖 确保`pom.xml`包含最MyBatis-Plus依赖(要求3.4.0+): ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> ``` ### 2. 配置分页插件 建配置类启用分页拦截器(关键步骤)[^3]: ```java @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加分页拦截器版本特性) interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } ``` ### 3. Mapper接口定义 继承`BaseMapper`获取分页查询能力: ```java public interface UserMapper extends BaseMapper<User> { // 自动继承selectPage方法 } ``` ### 4. 服务层实现 使用`Page`对象进行分页查询: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; public Page<User> getUsersByPage(int current, int size) { Page<User> page = new Page<>(current, size); return userMapper.selectPage(page, null); } } ``` ### 5. 控制器示例 接收分页参数并返回结果: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public Result<Page<User>> list( @RequestParam(defaultValue = "1") int current, @RequestParam(defaultValue = "10") int size) { return Result.success(userService.getUsersByPage(current, size)); } } ``` ### 验证分页效果 请求`GET /user/list?current=2&amp;size=5`将返回: ```json { "records": [...], "total": 100, "size": 5, "current": 2 } ``` ### 关键特性说明 - 自动计算总记录数(执行COUNT查询) - SQL自动添加`LIMIT`子句[^2] - 支持多数据库类型(通过`DbType`参数配置)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值