Mybatis-plus 代码生成器只生成目录的解决办法

问题复现:

  1. mybatis-plus代码生成器(可以在官方的文档找到demo)
  2. oracle数据库

现象:启用代码生成器只有目录产生了,没有实体和mapper这些


现象.png

正文开始:
emmm,遇到这个问题确实是个比较头疼的事情。当我面对这一个数据表拥有50个字段的时候,我彻底放弃了手动敲实体类的想法。这时候,看到mybatis-plus文档提供了代码生成器!解决生产力的福音!然后就照着文档的代码生成器搞了起来。
一切都ok,启动,输入包名,表名,回车!


启动成功.png

wo!多么美妙的一天啊~ 生产力又解放了呢~
如果你以为这样就结束了,那就太天真了(/黑脸)

正当我解放生产力的时候,我再次输入表名,结果这次:


失败.png

????什么,之前不是用的好好的么???
尝试多遍之后我意识到这不是个简单的问题。之前ok的啊,为什么这张表不行?....
然后,有两个选择在我面前
1.手敲50个字段
2.调试这个代码生成器
作为一个懒人,肯定调试啊,还一劳永逸!

断点调试!
在源码的com.baomidou.mybatisplus.generator.config.builder这个包下,有个这个函数getTablesInfo来获取数据库的相应信息,然后来生成entity。当然断点打上(建议,用idea看源码的时候最好把源码下载下来,class文件毕竟没有源代码看着舒服)。

image.png

很好,找到对应oracle数据源的处理模块了,接着往下走:
image.png

运行到这里的时候我就懵了?啥,retults.next()居然是false?这个while循环肯定执行不下去了,这个while循环就是处理需要自动生成的表的相关信息的,那都false了,还生成个锤子代码。
于是我开始了寻找这个的值为什么是false的旅途。

往上看一行,results这个结果实质性tablesSql来的(看上图的第457行)
既然这样,再来一遍。

sql.png

原来是执行了这条语句,走起,数据库执行一遍


sql.oracle

居然真的是空的,怪不得查不到数据。
然后我好像发现了什么猫腻,看到源码有一行注释


image.png

oracle默认schema=username,这个所有的表都是用这个用户名创建的???
这时候在看一下表的相关信息:
info

什么!?这张表的用户是 CUX!!!那我用APPS能查到才怪呢!
改一下用户名看能不能查到数据。


image.png

还真有,那么问题到这里就清晰了,是schema用错了,才导致没有数据的........

解决方案:
在生成器的主方法中有个设置数据源的地方:


datasource

在这里填上你需要的schema就ok。最后试试:


image.png

奶思!大功告成!能够生产代码了,美滋滋。

总结:
oracle数据库还是和mysql有很大不一样的,别问我为什么用oracle,因为这是个老项目的迁移,没得法。


think.png

贴个本项目Github地址支持oracle和mysql数据库 链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。