1. 程式人生 > >(手寫)mybatis 核心配置文件和接口不在同一包下的解決方案

(手寫)mybatis 核心配置文件和接口不在同一包下的解決方案

內置 中間 configure idea pan 數據源配置 uil 基礎 主目錄

smart-sh-mybatis項目

app.xml文件中此處配置為:

 1 <!-- 從整合包裏找,org.mybatis:mybatis-spring:1.2.4 -->
 2 <!-- sqlSessionFactory -->
 3 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 4     <!-- 數據庫連接池 -->
 5     <property name="dataSource" ref="dataSource" />
 6
<!-- 加載mybatis的全局配置文件 --> 7 <property name="configLocation" value="classpath:mybatis.xml" /> 8 <!-- 掃描對應的mapper的xml文件位置 --> 9 <property name="mapperLocations" value="classpath*:com/smart/**/*.xml" /> 10 </bean> 11 <!-- mapper掃描器 --> 12 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 13
<!-- 配置mapper接口存儲的包,用來掃描Mapper接口,如果需掃描多個中間可使用半角逗號隔開 14 如果當前mapper接口和xml文件在同一個包下,則不需配置上面的mapperLocations指定掃描的xml位置--> 15 <property name="basePackage" value="com.smart"/> 16 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 17 <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 18
會導致數據源配置不管用,數據庫連接不上。 19 且spring 4棄用 20 --> 21 </bean>


其中,
    <property name="mapperLocations" value="classpath*:com/smart/**/*.xml" />
用來配置xml文件的掃描路徑,
    <property name="basePackage" value="com.smart"/>
用來配置接口bean的掃描路徑,
-------------------------idea中對於src/main/java代碼路徑下的xml配置文件在默認編譯時,是是不會執行編譯的,
1. 將xml文件放到resource下面且xml的文件夾名稱起名和java中對應的接口對應一致即可,目的就是在idea編譯時將所對應的文件和接口bean還編譯到一個文件夾下,但這不符合最初bean接口和sql.xml配置文件放置在不同包下的初衷,且不符合最初將xml和bean作為dao的基礎類放到java主目錄下的初衷,
2. pom.xml中增加如下代碼塊:
 1 <build>
 2   <finalName>smart-sh-mybatis</finalName>
 3   <resources>
 4     <!-- idea的maven項目在編譯的時候,需手動指定src/main/java下的xml配置文件被包含編譯include,否則main/java下的
 5      xml配置文件,默認為不編譯,因為一般情況下xml的配置文件均是存在於resources目錄下,此處是將mybatis的sql.xml的
 6      映射文件放到了對應的main/java下 ,所以此處需手動指定包含即可。-->
 7     <resource>
 8       <!-- basedir maven內置變量,表示項目根目錄 -->
 9       <directory>${basedir}/src/main/java</directory>
10       <includes>
11         <include>**/*.xml</include>
12       </includes>
13     </resource>
14   </resources>
15 </build>


即在idea中的maven程序在執行代碼編譯時是走的maven編譯的效果,所以此處增加pom.xml中編譯時的說明即可,
如上,即在編譯build構建項目/src/main/java模塊時,包含目錄下的*.xml文件一起構建編譯。


(手寫)mybatis 核心配置文件和接口不在同一包下的解決方案