ssm?mybatis如何配置多個(gè)mapper目錄
ssm mybatis配置多個(gè)mapper目錄
通配符配置
比如目錄的結(jié)構(gòu)如下:
com/test/web/user/mapper
com/test/web/order/mapper
com/test/web//mapper
<!-- 掃描 xxxMapper.xml --> ?? ? ? <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> ? ? ? ? <property name="dataSource" ref="dataSource" /> ? ? ? ? <property name="configLocation" ?value="classpath:spring/mybatis-config.xml"/> ? ? ? ? ? <property name="mapperLocations" value="classpath*:com/xxxcompany/xxxproject/*/mapper/*.xml" /> ? ? </bean> <!-- 掃描 xxxMapper --> ? ? <bean id="daoScan" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ? ? ? ? <property name="basePackage" value="com.xxxcompany.xxxproject.*.mapper" /> ? ? ? ? <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> ? ? </bean>
除了上面這種目錄結(jié)構(gòu)一致的方式,我們還可以使用下面的配置方式,這個(gè)意思也就是說(shuō)只要是符合mapper* 這樣的命名規(guī)則的包都會(huì)被掃描到
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> ? ? ? ? <property name="dataSource" ref="dataSource" /> ? ? ? ? <property name="configLocation" ?value="classpath:mybatis-config.xml"/> ? ? ? ? ? <property name="mapperLocations" value="classpath*:com/dada/**/*Mapper.xml"/>? ? ? </bean> ? ? <!-- 配置掃描器 --> ? ? <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ? ? ? ? <property name="basePackage" value="com.dada.test.mapper*"/> ? ? ? ? <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> ? ? </bean>
ssm項(xiàng)目 mappers標(biāo)簽
mappers標(biāo)簽標(biāo)簽的作用
為了讓mybatis找到mapper.xml文件。
在后面的ssm整合項(xiàng)目中,有兩種方式可以代替它
- 一個(gè)是使用MapperScannerConfigurer
- 一個(gè)是使用mapperLocation屬性(位于SqlSessionFactoryBean中):mapperLocation屬性,主要用于指定mapper.xml文件所處的位置。
MapperScannerConfigurer可以自動(dòng)掃描到和接口同包同名的mapper.xml文件
mapperLocation屬性可以指定掃描。
下面來(lái)個(gè)逆向思考?。。?/strong>
在ssm項(xiàng)目中,將mapper.xml文件放進(jìn)和dao接口不同的包中,這樣的話MapperScannerConfigurer的自動(dòng)掃描就掃描不到mapper.xml文件了。然后不使用mapperLocation屬性,意思就是使用mappers標(biāo)簽來(lái)代替兩個(gè)新方法,來(lái)驗(yàn)證一下。
但是結(jié)果卻和我想的不一樣?。?!下面我來(lái)說(shuō)我遇到的一些坑?。?!
mappers標(biāo)簽的配置方式有4種
<!-- 1.使用相對(duì)于類(lèi)路徑的資源引用 --> <mappers> ? <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> </mappers> <!-- 2.使用完全限定資源定位符(URL) --> <mappers> ? <mapper url="file:///var/mappers/AuthorMapper.xml"/> </mappers> <!-- 3.使用映射器接口實(shí)現(xiàn)類(lèi)的完全限定類(lèi)名 --> <mappers> ? <mapper class="org.mybatis.builder.AuthorMapper"/> ? <mapper class="org.mybatis.builder.BlogMapper"/> ? <mapper class="org.mybatis.builder.PostMapper"/> </mappers> <!-- 4.將包內(nèi)的映射器接口實(shí)現(xiàn)全部注冊(cè)為映射器 --> <mappers> ? <package name="org.mybatis.builder"/> </mappers>
- 使用第3種和第4種方法需要和MapperScannerConfigurer一樣,將mapper.xml文件和dao接口同名同包。
- 對(duì)于第一種方法,我們需要注意的是:/ 和 .
蜿蜒曲折的探究道路
對(duì)于指定類(lèi)路徑的資源引用的方式,也就是第一種方式,我將mapper.xml文件所在包放進(jìn)了dao接口所在包的子包。結(jié)果idea提示說(shuō)找不到mapper.xml文件,然后我又調(diào)了一會(huì)(將mapper.xml文件所在包改變位置后)可以正常運(yùn)行,然后我就以為mapper.xml文件所在包不能放進(jìn)了dao接口所在包的子包。我又重新把mapper.xml文件所在包放進(jìn)了dao接口所在包的子包,結(jié)果能正常運(yùn)行了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)之JDK1.8新特性lambda表達(dá)式詳解
函數(shù)式接口有且僅有一個(gè)抽象方法,但是可以有多個(gè)非抽象方法的接口,函數(shù)式接口可以被隱式轉(zhuǎn)換為lambda表達(dá)式,這篇文章主要介紹了Java基礎(chǔ)之lambda表達(dá)式(JDK1.8新特性),需要的朋友可以參考下2023-08-08
MyBatis-Plus速成指南之簡(jiǎn)化你的數(shù)據(jù)庫(kù)操作流程(最新推薦)
MyBatis-Plus?是一個(gè)?MyBatis?的增強(qiáng)工具,在?MyBatis?的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章主要介紹了MyBatis-Plus速成指南:簡(jiǎn)化你的數(shù)據(jù)庫(kù)操作流程,需要的朋友可以參考下2025-02-02
詳解Spring Boot Web項(xiàng)目之參數(shù)綁定
本篇文章主要介紹了詳解Spring Boot Web項(xiàng)目之參數(shù)綁定,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Java把數(shù)字格式化為貨幣字符串實(shí)例代碼
這篇文章主要介紹了Java把數(shù)字格式化為貨幣字符串實(shí)例代碼,需要的朋友可以參考下2014-02-02
Spring?Boot?優(yōu)雅整合多數(shù)據(jù)源
這篇文章主要介紹了Spring?Boot?優(yōu)雅整合多數(shù)據(jù)源,多數(shù)據(jù)源就是在一個(gè)單一應(yīng)用中涉及到了兩個(gè)及以上的數(shù)據(jù)庫(kù),更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章介紹2022-05-05
k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn)
本文主要介紹了k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Java格式化小數(shù)并保留兩位小數(shù)的四種方法
Java中格式化小數(shù)并保留兩位小數(shù)的四種方法:使用DecimalFormat、String.format()、BigDecimal和NumberFormat,每種方法都有其適用場(chǎng)景和特點(diǎn),文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03

