Java Mybatis-plus 3.3.2分页配置

1、pom

<!-- MyBatis-Plus 3.3.2 核心依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version> <!-- 固定为 3.3.2 版本 -->
</dependency>

<!-- 数据库驱动(根据实际数据库选择) -->
<!-- MySQL 8.x -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.28</version> <!-- 适配 MySQL 8.x -->
</dependency>
<!-- MySQL 5.x -->
<!-- <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>5.1.49</version>
</dependency> -->

2、分页配置类

import com.baomidou.mybatisplus.annotation.DbType;
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;

/**
 * MyBatis-Plus 3.3.2 分页插件配置类
 */
@Configuration
// 扫描 Mapper 接口所在包(确保分页插件对所有 Mapper 生效)
@MapperScan("com.example.mapper") // 替换为你的 Mapper 包路径
public class MybatisPlusPageConfig {

    /**
     * 注册分页插件(3.3.2 核心)
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        
        // 1. 指定数据库类型(必须配置,否则分页 SQL 生成失败)
        // 可选:DbType.MYSQL、DbType.POSTGRE_SQL、DbType.ORACLE、DbType.SQL_SERVER 等
        paginationInterceptor.setDbType(DbType.MYSQL);
        
        // 2. 分页溢出处理(可选,默认 false)
        // true:页码超过最大页数时,自动查询最后一页
        // false:页码越界返回空数据
        paginationInterceptor.setOverflow(true);
        
        // 3. 单页最大条数限制(可选,防止恶意查询)
        // 超过限制会抛出 IllegalArgumentException 异常
        paginationInterceptor.setLimit(100); // 单页最多 100 条
        
        // 4. 计数优化(可选,默认 true)
        // 联表查询时,将 count(*) 优化为 count(1),提升性能
        paginationInterceptor.setOptimizeJoin(true);
        
        // 5. (可选)指定分页方言类(默认自动适配,特殊数据库可自定义)
        // paginationInterceptor.setDialect(new MySqlDialect());
        
        return paginationInterceptor;
    }

    /**
     * (可选)MyBatis 原生配置自定义(如驼峰命名、二级缓存)
     */
    /*@Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> {
            // 数据库字段下划线转实体类驼峰命名(默认开启,可显式配置)
            configuration.setMapUnderscoreToCamelCase(true);
            // 关闭二级缓存(避免多线程数据不一致,根据需求选择)
            configuration.setCacheEnabled(false);
        };
    }*/
}

 

posted @ 2025-11-28 14:54  都是城市惹的祸  阅读(25)  评论(0)    收藏  举报