一. 问题背景
springboot版本2.3
情况:照着b站的雷神的视频写代码,全部无误,那些什么namespace、resultType
也无误,都能对应得上,@MapperScan
也加了,yml中也配置了mapper-locations: classpath:mybatis/mapper/*.xml
。但是启动后,输入localhost:8080/emp/1
就会报Invalid Statement xxx not found
。
真的很崩溃,全都无误,为什么会报错。
我的情况可能很少人遇到,以下的方案不能解决大部分人的问题,希望能帮助到遇到类似情况的人吧。
二. 解决方案
我的工程中有application.yml以及application.properties配置文件,所有的配置都是在application.yml文件中配置的。经历了无数次失败后,不经意打开application.properties,发现里面也配置了mapper-locations
!
解决方法:将application.propertie里面有关mybatis配置全部注释掉或者删掉就解决问题了。
三. 报错的原因
因为properties文件的优先级比yaml高,如果两者同时配置,那么properties的配置会覆盖yaml配置。
我从没有在properties中配置过,不知道是哪里出了问题。如下:
因为有alibaba的配置项,猜测是我使用的druid依赖是druid-spring-boot-starter,导致引入的时候自动配置了。仅仅是猜测而已