当前使用版本(必填,否则不予处理)
在官方示例上进行修改可直接重现 https://gitee.com/baomidou/mybatis-plus-samples/tree/master/mybatis-plus-sample-id-generator
该问题是如何引起的?(确定最新版也有问题再提!!!)
个人认为是
1、配置了全局表名前缀,导致提前(在com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils 226行代码执行前)调用了com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils#getGlobalConfig 25行,导致GLOBAL_CONFIG已经初始化了GLOBAL_CONFIG缓存(此时缓存中的GlobalConfig的identifierGenerator为空),然后就不会重新设置(新的GlobalConfig里面是有自定义的identifierGenerator的),最终导致org.apache.ibatis.session.SqlSessionFactory 71行,判定没有自定义的identifierGenerator,所以永远使用DefaultIdentifierGenerator
mybatis-plus:
configuration:
global-config:
dbConfig:
tablePrefix: qsy_
重现步骤(如果有就写完整)
-
使用官方例子:](https://gitee.com/baomidou/mybatis-plus-samples/tree/master/mybatis-plus-sample-id-generator)
-
修改schema-h2.sql文件的user为qsy_user(任意前缀)
-
配置全局表名前缀
mybatis-plus: configuration: global-config: dbConfig: tablePrefix: qsy_ -
启动测试类
报错信息
断言失败,且DBUGE模式下,不会进入自定义的identifierGenerator
Comment From: miemieYaho
https://github.com/baomidou/mybatis-plus/issues/3024
Comment From: ysxForGiHub
3024
不好意思,看了ISSUE,是要求我按照这个方法自行解决?还是降低版本再试?
还是,这确实是一个BUG,待官方修复? 还是,这并不是一个BUG,是使用者瞎搞(并不认为我这个是瞎搞啊<手动狗头>,全局表名前缀时官方提供的,自定义ID生成器也是官方提供的)? 望回复
Comment From: miemieYaho
https://github.com/baomidou/mybatis-plus/issues/3026
Comment From: ysxForGiHub
@miemieYaho
GLOBAL_CONFIG的初始化,并不是只有图中的地方会设置
这里在获取不到的情况下,也会设置成默认的
com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils#getGlobalConfig
Comment From: miemieYaho
还没明白? mybatis-plus.configuration.global-config 开头的都是无效配置
Comment From: ysxForGiHub
还没明白? mybatis-plus.configuration.global-config 开头的都是无效配置
哦哦,明白了,感谢指点,不然又要花费不少时间去看了 @miemieYaho