当前使用版本(必填,否则不予处理)

在官方示例上进行修改可直接重现 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_

重现步骤(如果有就写完整)

  1. 使用官方例子:](https://gitee.com/baomidou/mybatis-plus-samples/tree/master/mybatis-plus-sample-id-generator)

  2. 修改schema-h2.sql文件的user为qsy_user(任意前缀)

  3. 配置全局表名前缀 mybatis-plus: configuration: global-config: dbConfig: tablePrefix: qsy_

  4. 启动测试类

报错信息

断言失败,且DBUGE模式下,不会进入自定义的identifierGenerator

Comment From: miemieYaho

https://github.com/baomidou/mybatis-plus/issues/3024

Comment From: ysxForGiHub

3024

不好意思,看了ISSUE,是要求我按照这个方法自行解决?还是降低版本再试? MyBatis-Plus 自定义ID生成器在特定配置下失效 还是,这确实是一个BUG,待官方修复? 还是,这并不是一个BUG,是使用者瞎搞(并不认为我这个是瞎搞啊<手动狗头>,全局表名前缀时官方提供的,自定义ID生成器也是官方提供的)? 望回复

Comment From: miemieYaho

https://github.com/baomidou/mybatis-plus/issues/3026

Comment From: ysxForGiHub

@miemieYaho MyBatis-Plus 自定义ID生成器在特定配置下失效 GLOBAL_CONFIG的初始化,并不是只有图中的地方会设置 MyBatis-Plus 自定义ID生成器在特定配置下失效 这里在获取不到的情况下,也会设置成默认的 com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils#getGlobalConfig

Comment From: miemieYaho

还没明白? mybatis-plus.configuration.global-config 开头的都是无效配置

Comment From: ysxForGiHub

还没明白? mybatis-plus.configuration.global-config 开头的都是无效配置

哦哦,明白了,感谢指点,不然又要花费不少时间去看了 @miemieYaho