之前使用的时候从来没专门设置过这个属性,但是也一直是能扫描到,导致突然拉去一个新的项目后,看见这个属性有点懵逼,所以记录一下,为后来人开万世太平,哈哈。
话不多说直接上结论:
结论是:如果Mapper.xml与Mapper.class在同一个包下且同名,spring扫描Mapper.class的同时会自动扫描同名的Mapper.xml并装配到Mapper.class。(这也是我之前开发的项目一直结构,所以从来没操心过)
如果Mapper.xml与Mapper.class不在同一个包下或者不同名,就必须使用配置mapperLocations指定mapper.xml的位置。
此时spring是通过识别mapper.xml中的 <mapper namespace="com.fan.mapper.UserDao"> namespace的值来确定对应的Mapper.class的。或者如果是SpringBoot的话,在application.yml中配置
mybatis: mapper-locations: classpath:***/*/*.xml(地址写自己的)