记一次分页助手与高斯数据库的使用记录

背景:SpringBoot+Mybatis+GaussDB项目,使用PageHelper做分页查询时出错,提示请设置helperDialect参数

在这里,我首先说说我解决问题的思路。这里说的思路,是指依靠自己,不去百度而光看源码和报错信息来解决问题的,因为这样对自己解决问题的能力提升比较大。

根据错误栈信息定位到出错代码,可以发现是一个Mapper接口,具体差不多是这样:

xxxxMapper.qryXXX();

观察代码,全程分页插件只调用了:Page page = PageHelper.startPage(1, 5);

那么基本可以肯定是PageHelper在初始化时的其他配置导致的,可能是Properties啊,application配置文件之类的,点进去PageHelper的源码,发现了一个设置Properties的地方,其中有一个叫autoDialect=xxx()的设置项很可疑,点进去

后面经过多层调用,找到了报错信息的代码处PageAutoDialect,也就找到了出错原因:传入的数据库连接url被提取两个indexOf(":")之间的字符串(比如jdbc:db2://99.12.13.14:9000 这样的连接,明显是连接db2数据库),并在对应的hashMap中找对应的注册类,没找到高斯数据库的,所以报错了。

接下来就是找有没有“手动配置”的代码了。这里就考验读和分析源码的能力,和Java能力了。

经过分析,发现在PageAutoDialect类里有相关的函数initDialect,并在SpringBoot初始化时调用,读取DataSource的Properties并找到key为dialectAlias并且值为alias1=xx.dialectClass;alias2=dialectClass2形式。

怎么给DataSource设置Properties呢?往回查看调用该函数的地方,有两处,一个是autoConfigure,一个是interceptor拦截器,在拦截器里添加Properties,最终会被读取并添加进PageHelper的属性中。

PS:没有附代码,也不详细,只是记录下大概的过程。想看详细过程,

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容