項目啟動報了一堆錯誤,其實都是class path resource [mapper/] cannot be resolved to URL because it does not exist這一個錯誤引起的
原來的session工廠的配置是這樣寫的
<!-- 配置mybitas工廠,同時指定數(shù)據(jù)源,并與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工廠,同時指定數(shù)據(jù)源,并與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*區(qū)別:
classpath:只會到你的class路徑中查找文件。
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找。
注意: 用classpath*:需要遍歷所有的classpath,所以加載速度是很慢的;因此,在規(guī)劃的時候,應(yīng)該盡可能規(guī)劃好資源文件所在的路徑,盡量避免使用classpath*
經(jīng)分析,這樣會把依賴工程中的classpath下的都加載進(jìn)來。
最后還是使用classpath,IDEA在編譯的時候,沒把空文件夾mapper復(fù)制到target目錄下,導(dǎo)致編譯過程中找不到這個目錄。所以在mapper目錄下新建一個txt文件,避免空文件夾。重新運行就可以通過了