第一种:接口和xml不在同一个目录,需要在sqlSessionFactoryBean中额外 指定xml的路径:
<!-- myBatis文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 --> <property name="mapperLocations"> <list> <value>classpath:com/liuyx/**/mappers/${db}/*.xml</value> </list> </property> <property name="plugins"> <array> <ref bean="pagePlugin" /> </array> </property> </bean> <!-- mapper接口namepspace绑定方式 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.liuyx.base.**.dao" /><!-- 多个使用逗号分隔 --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean>
第二种,接口和xml在同一个路径下,可以只配置MapperScannerConfigurer下的basePackage:
<!-- 配置Mybatis SqlSessionFactory 会话工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 配置Mybatis的核心 配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 基础包 包下所的接口全扫描 --> <property name="basePackage" value='com.liuyx.**.dao' /> <!-- 注入工厂 --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean>
有时间的童鞋可以自己看看源码。