今天遇到了一个比较常见的报错could not fin resource,这个报错大多时候是因为mybatis-config中的配置文件出现问题导致的,但是我反复检查了配置文件,发现都没什么问题,这又是什么原因?
首先场景重现一下
这是在idea中,显示的层级关系,可以看到,UserMapper接口和UserMapper.xml的路径一致,一个在resources里,一个在包里
这是UserMapper.xml中的mapper配置信息,可以看到,namespace的设定也没有问题
这是mybatis-config.xml中的配置,可以看到,resource也没有问题
但是如果我们尝试运行以下代码
却会报错!报错的内容如下:
这是怎么回事呢
经过我痛苦的一个多小时的debug,最终发现了问题的根源
com.dunn.Mapper被命名成了一整个包,而不是有层级缩进关系的包,所以自然在配置文件读取路径的时候无法读取到...总的来说,我把锅甩给idea的包名显示...这东西,不直接去文件夹里翻,根本发现不了
解决这个问题的办法也很简单,在显示项目(界面左侧)的右上角点齿轮,在TreeAppearance栏中,取消勾选FlattenPackages和compact middle packages ,就可以禁止idea把底下没有文件的包卷起来了