目录
一、背景
框架:springboot2.2.4.RELEASE、mybatis-plus3.3.1版本
二、问题
使用mybatis-plus已集成的自动生成代码框架生成代码
我当时查看mybatis-plus官网文档的时候,也看到了他写的注意事项:
然后 我就只针对引入的mybatis-plus-generator包依赖最新版本3.5.1
结果导致根据官网配置好生成代码的main方法之后,执行报错:
10:43:00.524 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================准备生成文件...==========================
10:43:00.675 [main] WARN org.apache.velocity.deprecation - configuration key 'file.resource.loader.unicode' has been deprecated in favor of 'resource.loader.file.unicode'
10:43:00.681 [main] WARN org.apache.velocity.deprecation - configuration key 'file.resource.loader.class' has been deprecated in favor of 'resource.loader.file.class'
Exception in thread "main" java.lang.NoSuchFieldError: GAUSS
at com.baomidou.mybatisplus.generator.config.querys.DbQueryRegistry.<init>(DbQueryRegistry.java:44)
at com.baomidou.mybatisplus.generator.config.DataSourceConfig.getDbQuery(DataSourceConfig.java:102)
at com.baomidou.mybatisplus.generator.config.querys.DecoratorDbQuery.<init>(DecoratorDbQuery.java:57)
at com.baomidou.mybatisplus.generator.IDatabaseQuery$DefaultDatabaseQuery.<init>(IDatabaseQuery.java:97)
at com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder.getTableInfoList(ConfigBuilder.java:139)
at com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine.batchOutput(AbstractTemplateEngine.java:226)
at com.baomidou.mybatisplus.generator.AutoGenerator.execute(AutoGenerator.java:179)
at com.baomidou.mybatisplus.generator.FastAutoGenerator.execute(FastAutoGenerator.java:213)
at
三、解决方案
1、网上的答案:
一开始直接搜索
Exception in thread "main" java.lang.NoSuchFieldError: GAUSS
at com.baomidou.mybatisplus.generator.config.querys.DbQueryRegistry.<init>(DbQueryRegistry.java:44)这部分错误信息
还真的能在网上搜索到相同的问题,别人的解决方案是因为generator包和mybatis-plus包引入的mybatis-plus-extension包版本不一致导致;我一开始也是根据他的解决方式去重,在generator依赖中排除mybatis-plus-extension。但是问题一样存在。
2、自己的方案:
最后没办法只能debug一步步的跟进代码最后排查到:
mybatisplus.annotation的3.3.1包中的DbType枚举类型没有GAUSS等等类型。
最后mybatis-plus也改成3.5.1版本才有对应的枚举类中的值。
四、总结:
1、遇到问题需要定位到问题的本质,不能直接网上搜索答案(需要瞎猫碰到死耗子刚好解决你的问题那最好,不然你需要对网上的答案一个个的尝试之后才知道是否可行)。
2、我们在实际开发的时候是引入mybatis-plus的启动器,所以不能只是引入最新的generator的版本依赖。需要引入启动器最新版本依赖。(这个是我自己没有看清楚注意事项导致)