baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.3k stars 4.3k forks source link

多数据源模式下切换数据源方言未正常切换导致分页报错 #6212

Closed yutons closed 3 months ago

yutons commented 3 months ago

当前使用版本

3.5.5-3.5.6

当前环境信息 例如: Java8 + Mysql5.7

jdk8+mysql8+sqlserver2008R2

描述bug现象

多数据模式下,切换数据源后分页未正常切换方言,导致分页报错 首次执行mysql数据源的接口时,mysql分页正常,sqlserver分页异常; 首次执行sqlserver数据源的接口时,mysql分页异常,sqlserver分页正常;

首次分页,dialect为空,可以正常设置方言并加载数据 image 第二次之后,dialect不为空,默认使用了上一次的方言,导致无法加载数据 image

尝试使用3.3.2版本的mybatis-plus均可正常;

提供问题复现步骤

经过调试发现 com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor 方法findIDialect中的dialect取值不为空,dbType为空,导致无法正常获取方言信息,从而导致分页失败

提供完整堆栈日志(可选)

提供问题复现工程(可选) 请尽量提供复现工程,减少大家排错的时间.

miemieYaho commented 3 months ago

使用无参构造new PaginationInnerInterceptor() 实在不行你就自己重写findIDialect方法