mybaties 多模块开发,mapp.xml扫描问题
背景
在很多时候,为了让我们的系统更加简洁,以及更好的开发分工,跟业务的解耦,在开发的过程中,我采用多模块去开发,那么在某个应用引入多模块的时候,就会碰到无法扫描到某些模块中的/resource/mapper.xml 的配置文件映射。
下面我就说说我在使用spring boot 多模块开发式遇到的这个问题以及解决办法。
问题描述
现在我有 cms-service、order-service、app-web 三个模块,各个模块中在/resource/mapper/的目录下都有mybaties的文件映射。
spring boot application.yml 的配置内容如下:
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
项目启动后,调用api 请求进行数据库操作(CURD),这时候,mybaties 抛了个异常。
异常信息如下:
Invalid bound statement (not found): com.xxx.cms.mapper.ArticleMapper.add
抛出异常后,我第一件事就认为是没有指定mapper.xml 路径,但是我看配置文件的时候,没发现什么大问题, classpath:mapper/*Mapper.xml,但是为什么没扫描到呢?
解决问题
原来这个配置,应用只会扫描自己目录下的配置,而不会扫描其他的应用的配置,那么我把配置改成:
mybatis:
mapper-locations: classpath*:mapper/*Mapper.xml
问题解决。