SpringBoot多个module中同时存在Mapping映射文件时如何正确配置扫描 解决 nvalid bound statement (not found):

题外话:为什么我爱的项目工程及前缀是Umbrella 因为我是个生化迷啊哈哈O(∩_∩)O哈哈~

用一个例子来说明一下:

我们创建了两个模块,分别代表核心系统和商店系统。

其中商店系统依赖了核心系统的用户相关的查询接口,这个时候会出现核心系统和商店系统中都出现了Mapping。

SpringBoot多个module中同时存在Mapping映射文件时如何正确配置扫描 解决 nvalid bound statement (not found):_第1张图片

我们可以看到系统中的两个模块

一个是core,一个是shop。

 

shop模块依赖了core模块。

 

shop和core都有自己的Mapping

 

每个mapping下又有自己的xxxDao.xml

 

一般而言保留一份配置文件即可

我所说的配置文件就是application.properties。

 

 

!!请注意:配置文件一定要加上如下的配置,你的很多找不到对应的dao方法的报错都源自于此

#mybatis
mybatis.mapper-locations=classpath*:mapping/*.xml

!!再请注意:修改完配置文件,不要相信自己的ide可以帮你编译的很正确,有时候我们需要右击target 选择Synchrogazer一下,我就遇到了明明删除了一个配置文件target下却还有的问题。

 下面我们看看classpath到底是什么,classpath就是一个项目资源文件仓库的大门,所以SpringBoot会根据大门加载资源,下面就是springboot默认加载静态资源的路径顺序

SpringBoot多个module中同时存在Mapping映射文件时如何正确配置扫描 解决 nvalid bound statement (not found):_第2张图片

但是当我们启动类所处位置为shop模块时,classpath加载到shop模块的resource时就不会加载其他的模块了,但是classpath*的作用就是延伸加载的范围到我们的依赖模块中,也就是core模块。所以classpath:/resources下的文件也会被加载。

 

你可能感兴趣的:(Spring,Boot)