刚刚开始学习SSM框架,对Mapper扫描加载遇到一些问题,终于解决啦。
在Eclipse中能够通过将mapper.xml文件和mapper.java文件放在同一路径下,进行扫描映射,但是IDEA并不能实现,
在spring的配置文件applicationContext.xml中,可进行mapper扫描配置
通过这项配置,就不必要在sqlMapConfig.xml文件中加载mapper映射文件了。
如下:
<!-- 配置SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的配置文件-->
<property name="configLocation" value="classpath:config/mybatis/SqlMapConfig.xml"/>
<!-- 数据源-->
<property name="dataSource" ref="dataSource"/>
<!-- mapper.xml扫描-->
<property name="mapperLocations" value="classpath:config/mapper/*.xml"/>
</bean>
<!-- mapper扫描器-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.youye.mapper"/>
</bean>
在配置sqlSessionFactory时,配置mapperLocations属性,用来加载mapper.xml文件,mapper扫描器配置则如上所示。
mapper扫描器中的两个property的顺序不能交换,即SQLSessionFactoryBeanName必须在前。