背景:项目因数据拆分到GP库,部分查询的数据源要从Oracle换成GP。
在修改使用PageHelper分页的查询方法时,发现PageHelper拦截Sql后包装的一直不对。
阅读PageHelper源码发现问题在PageHelper的初始化上。
PageHelper的首次初始化时默认使用autoDialect方式,autoRuntimeDialect运行时自动获取配置是默认不使用的,而使用这种方式,只会执行一次初始化,不论之后是否切换数据源,数据库配置都是首次连接的数据库配置。
目前项目中先从Oracle查询,然后再在GP中查询,不开启自动获取配置autoRuntimeDialect就会一直是按照Oracle方言解析包装SQL,导致查询在GP中无法执行。
解决方法为开启自动配置:autoRuntimeDialect: true
也可以根据pageHelper暴露的两个配置方法手动开启自动配置