相信這個問題,網上有很多類似的問題,不外乎是mapper.xml的文件沒有映射到namespace的接口,或者接口名沒有和SQL的id相同等等。
但今天遇到了一個特別的坑,費了很長時間,這里特地說一下。
在排除了所有的問題后,最后無意中發現了是spring boot的啟動配置文件問題,我是用的yml文件的方式,這里有個特別要注意的地方。
這里先介紹下,yml的配置和一般的properties不同。
properties配置方式,如下:
mybatis.configuration.default-statement-timeout=25000 mybatis.mapper-locations=classpath:mapping/*.xml
yml配置方式,如下:
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: mybatis/**/*Mapper.xml //這里有一定要和configuration保持平級
可以看出yml采用樹形結構,更加簡潔,但更容易出錯,
因為不加分號,所以層次結構,必須得規規整整,我就是因為將mapper-location和 map-underscore-to-camel-case: true保持平級,成為了configuration的子節點。
所以實際上的配置是 mybatis.configuration.mapper-locations: mybatis/**/*Mapper.xml,自然是配置出現了問題。
而 mapper-locations是應該屬於mybatis節點的,這才踩了一個非常容易出現錯的地方,一定要牢記。
