首先IDEA與Eclipse不同,IDEA的maven項目中,(src/main/java)即默認源代碼目錄的xml等資源文件並不會在編譯期間打包進入class文件夾,而是直接忽略掉。如果編程工具使用的是Eclipse,Eclipse在編譯期間會自動將src目錄下xml等資源文件打包到classes文件夾。
當在IDEA中使用MyBatis時,一般會創建一個SQL映射的配置文件,這個文件如果是在(src/main/java)目錄下,編譯後在target目錄下是找不到這個文件的,下面就是在IDEA工具編程springboot時遇到的問題
解決方案一:如果沒有特殊的需求,xml文件等不需要放在(src/main/java)下,可以在src根目錄下創建resources文件夾,創建完成後再將xml等文件放入即可。maven在編譯期間會將resources文件夾中的xml等資源文件一起打包到classes目錄。
同時,我們需要在配置文件中指定mapper.xml文件的位置。
如果是application.properties文件,需要加上
mybatis.mapper-locations=classpath:mapper/*.xml
如果是application.yml文件,需要加上
mybatis:
mapper-locations: classpath*:mapper/*.xml
如果是普通的spring(SSM)項目,需要加上
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="druidDataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 配置mapper文件的位置 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
解決方案二:加上maven的pom文件配置,首先在pom文件中找到<bulid></build>節點,改爲下面代碼
<build>
<resources>
<!-- mapper.xml文件在java目錄下 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- mapper.xml文件在resources目錄下-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
以上兩種方法就大功告成啦,小小代碼希望能幫助遇到問題的同仁。