@MapperScan:
1.首先了解@Mapper
在接口上添加了@Mapper,在編譯以後就會生成相應的接口實現類。
不過須要在每一個接口上面進行配置,爲了簡化開發,就有了 @MapperScan。spring
@MapperScan:apache
指定要變成實現類的接口所在的包,而後包下面的全部接口在編譯以後都會生成相應的實現類。mybatis
@ComponentScan:
會自動掃描包路徑下面的全部@Controller、@Service、@Repository、@Component 的類,並把符合掃描規則的類裝配到spring容器中。app
@MapperScan和@ComponentScan能夠同時使用。spa
若是都是掃描的相同路徑時,對於同一個接口,可能就會出現識別錯誤。好比設計
在springBoot項目的Application上面定義了code
@MapperScan(basePackages = { "com" }) @SpringBootApplication
@SpringBootApplication包含了@ComponentScan。
在此項目下面有一個接口是com.xxInf,實現是com.xxImpl在實現類上面經過@Service加入spring容器中
咱們在注入的時候接口時
@Autowired private com.xxInf xx;
可能識別的不是xxImpl,而去mybatis裏面經過反射找綁定,這樣就會出現BindingException錯誤blog
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
因此在設計項目結構的時候要把mapper放到一個合適的位置,經過設置MapperScan的路徑basePackages 好避免這種衝突接口