一躏敢、概要
連接阿里Tddl分布式數(shù)據(jù)庫(kù)后分頁(yè)查詢報(bào)錯(cuò)
錯(cuò)誤日志
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: The jdbcUrl is Null, Cannot read database type
The error may involve defaultParameterMap
The error occurred while setting parameters
Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: The jdbcUrl is Null, Cannot read database type
MP版本
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
二、思考
從報(bào)錯(cuò)信息很容易就能看出是因?yàn)闆](méi)有讀取到url配置信息,但是在新增/刪除是沒(méi)有問(wèn)題的严望,說(shuō)明問(wèn)題不是因?yàn)榕渲梦募?br>
翻看 PaginationInterceptor
分頁(yè)攔截器源碼
DbType dbType = Optional.ofNullable(this.dbType).orElse(JdbcUtils.getDbType(connection.getMetaData().getURL()));
很明顯因?yàn)閛rElse不管optional是否存在都執(zhí)行了,導(dǎo)致報(bào)錯(cuò)逻恐。目前版本升級(jí)到3.3.2發(fā)現(xiàn)作者已經(jīng)修復(fù)了這個(gè)bug,更換稱了orElseGet
這個(gè)問(wèn)題github上已經(jīng)有人提了issue,參考:https://github.com/baomidou/mybatis-plus/issues/2172
三像吻、解決
版本升級(jí)3.3.2或以上版本