ssm整合 报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):xxx

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与返回值类型是否一致!

猜你喜欢

转载自blog.csdn.net/qq_44783283/article/details/108617395
今日推荐