mybatis-plus逆向工程生成代码-没有报错只生成了目录没有文件

背景:mybatis-plus有逆向工程根据模板生成mybatis的mapper,dao,service,controller代码的功能。

复现:代码生成的基本配置做好了,运行,什么都没有只生成了配置好的包目录,但是下面没有实际的代码文件,查看console也没有报错。注意mybatis-puls的日志都是debug格式所以什么都不打印,正常的打印也没有,但是没有报错提示生成的目录,证明代码有一半是对的,所以得debug一下错误原因。

打断点debug:最后跟踪到AbstractTemplateEngine的getObjectMap方法,195行的

return config.getInjectionConfig().prepareObjectMap(objectMap);

发现objectMap这个参数解析后是,发现injectionConfig这个参数是空指针

然后导致的空指针异常

mybatis-plus逆向工程生成代码-没有报错只生成了目录没有文件_第1张图片

所以捕获到异常,抛出的错误,导致生成解析文件失败

    } catch (Exception var11) {
            logger.error("无法创建文件,请检查配置信息!", var11);
        }

查看官方文档:https://mp.baomidou.com/guide/generator.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BB%A3%E7%A0%81%E6%A8%A1%E6%9D%BF

mybatis-plus逆向工程生成代码-没有报错只生成了目录没有文件_第2张图片

这个是用来自定义属性的,可以设置参数解析文件,在生成代码的时候替换掉,这是正常用法。

但是我目前没有外部的自定义属性需要使用,所以就没定义这个外部参数,导致InjectionConfig对象为null,产生的空指针异常,导致程序中断,生成文件失败。

所以不管用不用,根据官方文档加上这个参数就好了。

总结:1.由于mybatis-plus的默认日志打印的不完善,所以找错误不好找,只能debug。2.自定义外部参数这个如果不使用,应该可以为null,但是这里要求必须为null,又没有提示,所以属于不合理的错误。 3.解决办法加上官方文档上的自定义属性这段代码就好了。

追加mybatis-plus的日志配置,加上这个日志生成提示就都打印完全了:

log4j.properties文件,放到src/main/resources下面

内容:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: - %m%n

 

你可能感兴趣的:(mybatis)