mybatis那些約定的配置你真的都瞭解嗎(經驗總結)

背景

在springboot中有很多約定大於配置的規則,如果我們準守瞭約定,可以零配置。mybatsi中Mapper和xml文件之間有很多約定俗稱的規則,比如名稱匹配,包掃描,別名等,這些規則是什麼。如果想更加靈活,該如何配置呢?今天就給大傢講一下如何配置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接口實現類代理對象。
–程序員編寫mapper接口需要遵循一些開發規范。

mapper代理開發規范

  •  在mapper.xml中namespace等於mapper接口地址
  • mapper.java接口中的方法名和mapper.xml中statement的id一致
  • mapper.java接口中的方法輸入參數類型和mapper.xml中statement的parameterType指定的類型一致。
  • mapper.java接口中的方法返回值類型和mapper.xml中statement的resultType指定的類型一致。
  • mapper.xml文件名應該和接口名保持一致,否則也可能出現不匹配

二、xml文件的位置

位置1:放在resource目錄下相同目錄結構

這種方式無需額外的配置,但並不推薦。

在這裡插入圖片描述

位置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文件的,大傢可以自己嘗試

在這裡插入圖片描述

總結

雖然有多種方式都可以達成配置,但還是推薦加上註解同時指定好掃描路徑。

以上就是mybatis那些約定的配置你真的都瞭解嗎的詳細內容,更多關於mybatis配置的資料請關註WalkonNet其它相關文章!

推薦閱讀: