项目启动报了一堆错误,其实都是class path resource [mapper/] cannot be resolved to URL because it does not exist这一个错误引起的
原来的session工厂的配置是这样写的
<!-- 配置mybitas工厂,同时指定数据源,并与MyBatis完美整合 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapper/*.xml" /> <!-- configLocation的属性值为Mybatis的核心配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean>
在classpath后加上*号,所有的问题都解决了,更改后的代码
<!-- 配置mybitas工厂,同时指定数据源,并与MyBatis完美整合 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath*:mapper/*.xml" /> <!-- configLocation的属性值为Mybatis的核心配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean>
classpath和classpath*区别:
classpath:只会到你的class路径中查找文件。
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
注意: 用classpath*:需要遍历所有的classpath,所以加载速度是很慢的;因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*
经分析,这样会把依赖工程中的classpath下的都加载进来。
最后还是使用classpath,IDEA在编译的时候,没把空文件夹mapper复制到target目录下,导致编译过程中找不到这个目录。所以在mapper目录下新建一个txt文件,避免空文件夹。重新运行就可以通过了