场景:
开发环境:IntelliJ IDEA 2020.1 x64
项目搭建:SSM,MyBatis
问题描述:
对于spring整合mybatis,AppliicationContext.xml有如下配置:
<!--将sqlSession注入容器-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
</bean>
<!--自动扫描mapper包下的接口,为其自动生成代理对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.mrhu.mapper"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
注:如上配置,无需配置映射文件,前提要求接口的包结构要与相对应的mapper.xml的目录结构相同,在这里是cn.mrhu.mapper
目录结构如下:
运行报错:
报错信息为找不到相应接口下的方法,排查了所有可能出现的问题(命名空间namespace是否和接口一致,id是否和方法名一致等等)
原因分析:
idea在创建包结构时可以以 ” . “ 的形式来进行分隔
但是在resource目录下创建目录结构时要想分隔开要用 " / " 进行分隔,如果用 " . " 默认作为该目录的名字内容
总结:
掌握好工具的使用细节,对于报错信息要查找根源。