MyBatisPlus 分页配置
🏷️ MyBatis
MyBatisPlus 3.2.0
java
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MyBatisPlus插件配置
*
* @author 佳佳
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
参考:
XML 格式配置
使用上面 bean 的方式声明的分页拦截器没有起作用,发现是因为项目使用的是 xml 格式配置的方式声明的 sqlSessionFactoryBean 。
此时需要在其 plugins 下添加如下配置:
xml
<!-- MyBatisPlus 分页插件 -->
<bean id="paginationInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
<property name="properties">
<value>
<!-- 数据库方言(未配置时默认从当前数据库连接获取方言类型) -->
<!-- dialectType=mysql -->
<!--自定义数据库类型 -->
<!-- dialectClazz=true -->
</value>
</property>
</bean>
另外项目的旧代码是通过 pagehelper 组件来实现数据库分页的,完整配置如下:
xml
<!--配置myBatis数据库连接工厂-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="dataSource" ref="mybatis_dataSource"/>
<property name="mapperLocations">
<list>
<value>
classpath*:me/liujiajia/app/dao/mapper/*.xml
</value>
</list>
</property>
<property name="plugins">
<list>
<!-- MyBatisPlus 分页插件 -->
<bean id="paginationInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
<property name="properties">
<value>
<!-- 数据库方言(未配置时默认从当前数据库连接获取方言类型) -->
<!-- dialectType=mysql -->
<!-- 自定义数据库方言类型 -->
<!-- dialectClazz=customizedDialectClazz -->
</value>
</property>
</bean>
<!-- MyBatis-PageHelper 分页插件 -->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
<!-- 多租户插件 插件 -->
<bean id="tenantMybatisInterceptor"
class="me.liujiajia.app.dao.tenant.MultiTenantPlugin">
<property name="properties">
<value>
<!--当前数据库方言-->
dialect=mysql
<!--多租户隔离字段名称-->
tenantIdField=user_id
<!--需要隔离的表名称java正则表达式-->
tableRegex=ccc.*
<!--需要隔离的表名称,逗号分隔-->
tableNames=tb_log,tb_role
</value>
</property>
</bean>
</list>
</property>
</bean>
MyBatisPlus 3.4.1
java
import com.baomidou.mybatisplus.annotation.DbType;
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;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* MyBatis 插件配置
*
* @author JiaJia
*/
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
/**
* 配置分页插件
*
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}