学无先后,达者为师

网站首页 编程语言 正文

mybatis-plus不同类型多源数据库分页拦截器配置

作者:小木点 更新时间: 2024-03-20 编程语言

公司有个项目需要同时连接oracle和mysql数据库,配置多源数据库后发现分页查询会出现异常。
原因是,项目原来的分页拦截器的配置如下,只能支持oracle的分页

 @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
        return interceptor;
    }

后来考虑能否通过某种方式动态实现,经过查看PaginationInnerInterceptor的源码发现,实际上当没有配置分页拦截器的数据库类型时会自动获取。

...
 IDialect dialect = findIDialect(executor);
...
 protected IDialect findIDialect(Executor executor) {
        if (dialect != null) {
            return dialect;
        }
        if (dbType != null) {
            dialect = DialectFactory.getDialect(dbType);
            return dialect;
        }
        return DialectFactory.getDialect(JdbcUtils.getDbType(executor));
    }

所以根本就不用指定数据库类型,按照如下方式配置即可支持不同类型多源数据库的分页查询

public class MybatisPlusConfig {
    
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }

原文链接:https://blog.csdn.net/Jay_fanwj/article/details/129404581

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新