目录
- 1. 报错原因
- 2. 解决
- 3. 说明
1. 报错原因
使用MapperScannerConfigurer扫描对应的mapper接口,帮我把mapper放入spring容器中,但是我的mapper映射文件并没有关联到sessionFactory中。
加载mybatis核心配置文件时,
其中的环境,数据源,mapper标签会失效,不能加载mapper映射文件。
<!-- 配置sessionFactory --><bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 加载 mybatis核心配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!-- 将mapper接口给spring容器管理 --><bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.bitqian.dao"/></bean>
2. 解决
需要在SqlSessionFactoryBean中加载mapper文件
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 加载 mybatis核心配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/><!-- 加载mapper 映射文件--><property name="mapperLocations" value="classpath:cn/bitqian/mapper/*"/></bean>
3. 说明
- 这只是我的问题,没加载mapper映射文件
- 关于这个文件我也搞了好久
- 这个问题的本质是找不到mapper接口对应的方法,mapper接口中的方法和mapper配置文件中的statement标签映射失败,注意mapper映射文件namespace与mapper接口全类名是否一致,statement中的id与接口方法名是否一致,以及parameterType和方法参数,resultType/resultMap与返回值类型是否一致!