mybatis 整合spring之mapperLocations配置的問題


 今天嘗試spring整合mybatis時遇到這么一個問題,就是在配置sqlSessionFactory時是否要配置mapperLocations的問題。

 

復制代碼
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="datasource"></property>
    <property name="typeAliasesPackage" value="com.fan.entity"/>
      <!-- 當mybatis的xml文件和mapper接口不在相同包下時,需要用mapperLocations屬性指定xml文件的路徑。  
         *是個通配符,代表所有的文件,**代表所有目錄下 -->   
    <property name="mapperLocations" value="classpath:com/fan/mapper/*.xml" /> 
   
    <!--也可以引入mybatis配置文件 
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property> -->
</bean>
<!-- 通過掃描的模式,掃描目錄在com.lanyuan.mapper目錄下的mapper-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.fan.mapper"></property>
</bean>
復制代碼

 

結論是:如果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的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM