解決IDEA中src文件夾下不編譯xml文件或報錯Invalid bound statement (not found):XXX

首先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>

以上兩種方法就大功告成啦,小小代碼希望能幫助遇到問題的同仁。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章