Mybatis中接口和对应的mapper文件位置配置详解
今天遇到一個(gè)問(wèn)題是mybatis中接口和對(duì)應(yīng)的mapper文件位置不同,而引起的操作也會(huì)不同,在網(wǎng)上找了好久最終找到了方法,這里就簡(jiǎn)單的解析一下: 我們知道在典型的maven工程中,目錄結(jié)構(gòu)有:src/main/java和src/main/resources,前者是用來(lái)存放java源代碼的,后者則是存放一些資源文件,比如配置文件等. Mybatis中接口和對(duì)應(yīng)的mapper文件不一定要放在同一個(gè)包下,如果放在一起的目的是為了Mybatis進(jìn)行自動(dòng)掃描,并且要注意此時(shí)Java接口的名稱和mapper文件的名稱要相同,否則會(huì)報(bào)異常,由于此時(shí)Mybatis會(huì)自動(dòng)解析對(duì)應(yīng)的接口和相應(yīng)的配置文件,所以就不需要配置mapper文件的位置了。 1:接口和文件放在同一個(gè)包中如下: 在默認(rèn)的情況下maven打包的時(shí)候,對(duì)于src/main/java目錄只打包源代碼,而不會(huì)打包其他文件。所以此時(shí)如果把對(duì)應(yīng)的mapper文件放到src/main/java目錄下時(shí),不會(huì)打包到最終的jar文件夾中,也不會(huì)輸出到target文件夾中,由于在進(jìn)行單元測(cè)試的時(shí)候執(zhí)行的是/target目錄下/test-classes下的代碼,所以在測(cè)試的時(shí)候也不會(huì)成功。 為了實(shí)現(xiàn)在maven默認(rèn)環(huán)境下打包時(shí),Mybatis的接口和mapper文件在同一包中,可以通過(guò)將接口文件放在src/main/java某個(gè)包中,而在src/main/resources目錄中建立同樣的包,這是一種約定優(yōu)于配置的方式,這樣在maven打包的時(shí)候就會(huì)將src/main/java和src/main/resources相同包下的文件合并到同一包中。 在默認(rèn)maven打包的環(huán)境下,不要將接口文件和mapper文件全部放到src/main/java,這樣也不會(huì)把mapper文件打包進(jìn)去
在src/main/java和src/main/resources中相同的包名,相同的文件名,默認(rèn)打包后的結(jié)構(gòu)如下:
發(fā)現(xiàn)打包之后已經(jīng)到同一個(gè)包下了。 而當(dāng)你把接口和mapper文件全部放到src/main/java中同一包時(shí),如下:
打包之后的文件如下:
發(fā)現(xiàn)編譯打包之后并沒(méi)有mapper文件,所以此時(shí)不管是測(cè)試還是正式執(zhí)行都會(huì)出錯(cuò)!! 更改maven構(gòu)建配置 如果不想將接口和mapper文件分別放到src/main/java和src/main/resources中,而是全部放到src/main/java,那么在構(gòu)建的時(shí)候需要指定maven打包需要包括xml文件,具體配置如下: [java] view plain copy src/main/java **/*.xml false 這樣在打包的時(shí)候也會(huì)將mapper文件打包到/target文件夾中。 2:接口和文件不在同一個(gè)包下 如果接口和mapper文件不在同一個(gè)包下,就不能進(jìn)行自動(dòng)掃描解析了,需要對(duì)接口和文件分別進(jìn)行配置。 2.1 XML配置方式 2.1.1 不使用Spring 使用Mybatis的配置文件如下: [java] view plain copy
2.1.2 使用Spring 使用spring的配置文件如下: [java] view plain copy // ... 如果你也想在IT行業(yè)拿高薪,可以參加我們的訓(xùn)練營(yíng)課程,選擇最適合自己的課程學(xué)習(xí),技術(shù)大牛親授,7個(gè)月后,進(jìn)入名企拿高薪。我們的課程內(nèi)容有:Java工程化、高性能及分布式、高性能、深入淺出。高架構(gòu)。性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析和大數(shù)據(jù)等多個(gè)知識(shí)點(diǎn)。如果你想拿高薪的,想學(xué)習(xí)的,想就業(yè)前景好的,想跟別人競(jìng)爭(zhēng)能取得優(yōu)勢(shì)的,想進(jìn)阿里面試但擔(dān)心面試不過(guò)的,你都可以來(lái),群號(hào)為: 454377428 注:加群要求 1、具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加。 2、在公司待久了,過(guò)得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的可以加。 3、如果沒(méi)有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開(kāi)發(fā)框架掌握熟練的,可以加。 4、覺(jué)得自己很牛B,一般需求都能搞定。但是所學(xué)的知識(shí)點(diǎn)沒(méi)有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加。 5.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn),分享知識(shí),多年工作經(jīng)驗(yàn)的梳理和總結(jié),帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知! 6.小號(hào)或者小白之類加群一律不給過(guò),謝謝。 目標(biāo)已經(jīng)有了,下面就看行動(dòng)了!記住:學(xué)習(xí)永遠(yuǎn)是自己的事情,你不學(xué)時(shí)間也不會(huì)多,你學(xué)了有時(shí)候卻能夠使用自己學(xué)到的知識(shí)換得更多自由自在的美好時(shí)光!時(shí)間是生命的基本組成部分,也是萬(wàn)物存在的根本尺度,我們的時(shí)間在那里我們的生活就在那里!我們價(jià)值也將在那里提升或消弭!Java程序員,加油吧總結(jié)
以上是生活随笔為你收集整理的Mybatis中接口和对应的mapper文件位置配置详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WebView 文档 翻译
- 下一篇: 使用ITEXT操作PDF文件