spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到

spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到

    • 问题复现
    • 问题解决

问题复现

我的mybatis配置:
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第1张图片
父模块mapper目录
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第2张图片
子模块mapper目录
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第3张图片
运行报错:
找不到子模块中的mapper配置
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第4张图片

问题解决

debug了一下mybatis自动装配的源码
原来是org.springframework.core.io.support.PathMatchingResourcePatternResolver类中有这么个判断,
加了classpath*:前缀才会找所有模块的classpath路径
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第5张图片

所以将配置改成这样就好了
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第6张图片

改之前:
只能找到父模块的两个mapper文件
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第7张图片
改之后:
都能读到了
spring-boot项目,mybatis只读取了父模块的mapper目录,子模块的mapper目录读取不到_第8张图片

你可能感兴趣的:(mybatis,spring,boot)