mybatis那些約定的配置你真的都了解嗎(經(jīng)驗總結(jié))
背景
在springboot中有很多約定大于配置的規(guī)則,如果我們準守了約定,可以零配置。mybatsi中Mapper和xml文件之間有很多約定俗稱的規(guī)則,比如名稱匹配,包掃描,別名等,這些規(guī)則是什么。如果想更加靈活,該如何配置呢?今天就給大家講一下如何配置mybatsi的xml文件等。
一、@Mapper注解和@MapperScan注解使用說明
- 可以不使用@MapperScan注解,默認掃描根路徑下標注了@Mapper注解的接口
- 可以使用@Mapper注解,使用@MapperScan(“com.kouryoushine.mybatis.demo.mapper”),告訴spring該包下的接口都作為Mapepr對象掃描到容器中
- 兩個注解都不使用,報如下錯誤。在根路徑下掃描不到任何Mapper
- No MyBatis mapper was found in ‘[com.kouryoushine.mybatis.demo]' package. Please check your configuration.
二、 mapper代理方法必須一致
mapper代理方法
–程序員只需要mapper接口和mapper.xml映射文件,mybatis可以自動生成mapper接口實現(xiàn)類代理對象。
–程序員編寫mapper接口需要遵循一些開發(fā)規(guī)范。
mapper代理開發(fā)規(guī)范
- 在mapper.xml中namespace等于mapper接口地址
- mapper.java接口中的方法名和mapper.xml中statement的id一致
- mapper.java接口中的方法輸入?yún)?shù)類型和mapper.xml中statement的parameterType指定的類型一致。
- mapper.java接口中的方法返回值類型和mapper.xml中statement的resultType指定的類型一致。
- mapper.xml文件名應(yīng)該和接口名保持一致,否則也可能出現(xiàn)不匹配
二、xml文件的位置
位置1:放在resource目錄下相同目錄結(jié)構(gòu)
這種方式無需額外的配置,但并不推薦。

位置2:放在resource下任意目錄
比如指定mapper-location的位置,否則掃描不到
mybatis: mapper-locations: classpath:/mapper/*.xml
位置3:和mapper接口放在同一目錄下
這種情況下比較特殊,其實是能掃描到這個xml文件的,只是打包時不會打進去??梢酝ㄟ^添加如下配置將xml打包進去。
<build>
<resources>
<!-- 掃描src/main/java下所有xx.xml文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- 掃描resources下所有資源 -->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
注:沒有上述配置時target是沒有mapper.xml文件的,大家可以自己嘗試

總結(jié)
雖然有多種方式都可以達成配置,但還是推薦加上注解同時指定好掃描路徑。
以上就是mybatis那些約定的配置你真的都了解嗎的詳細內(nèi)容,更多關(guān)于mybatis配置的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于文件上傳MultipartBody的使用方法
這篇文章主要介紹了關(guān)于文件上傳MultipartBody的使用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
關(guān)于服務(wù)網(wǎng)關(guān)Spring Cloud Zuul(Finchley版本)
這篇文章主要介紹了關(guān)于服務(wù)網(wǎng)關(guān)Spring Cloud Zuul(Finchley版本),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

