content: package openjoe.smart.sso.server.stage.mybatisplus.config;
  
  import com.baomidou.mybatisplus.annotation.DbType;
  import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  import openjoe.smart.sso.server.stage.mybatisplus.handler.MybatisPlusMetaObjectHandler;
  import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  import org.springframework.boot.context.properties.EnableConfigurationProperties;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  
  @EnableConfigurationProperties({MybatisPlusProperties.class})
  @Configuration(proxyBeanMethods = false)
  public class MybatisPlusConfig {
  
      @Bean
      @ConditionalOnMissingBean
      public MybatisPlusInterceptor mybatisPlusInterceptor(MybatisPlusProperties properties) {
          MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
          PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor();
          // 如果指定了特定数据库类型分页语法（像OceanBase支持Mysql和Oracle模式，需要特定设置分页语法）
          if (StringUtils.isNotBlank(properties.getPageDbType())) {
              pageInterceptor.setDbType(DbType.getDbType(properties.getPageDbType()));
          }
          interceptor.addInnerInterceptor(pageInterceptor);
          return interceptor;
      }
  
      @Bean
      @ConditionalOnMissingBean
      public MetaObjectHandler mybatisPlusMetaObjectHandler() {
          return new MybatisPlusMetaObjectHandler();
      }
  }