1. 程式人生 > 其它 >【Mybatis】Mapper代理開發

【Mybatis】Mapper代理開發

目的

  • 解決原生方式中的硬編碼
  • 簡化後期執行SQL

步驟

  1. 定義與 SQL 對映檔案同名的 Mapper 介面,並且將 Mapper 介面和 SQL 對映檔案放置在同一目錄下

在這個步驟下,起始按照 maven 的要求,介面和對映檔案應該不能放在同一個目錄下的,但這裡的意思是,讓 maven 編譯後生成的 target 目錄下生成的資料夾內,Mapper 介面和 sql 對映檔案出現在同一目錄。
那麼如何實現這個方式呢?
首先在 src 目錄下建立一個專門放對映介面的包,並建立一個和 sql 對映檔案同名的 Mapper 介面,如下圖的com.test.mapper包和UserMapper.java

然後在 resources 目錄下建立一個資料夾,這個資料夾的名稱和放了 Mapper 介面的資料夾名稱一樣,但是建立的方式並不是用.來間隔,而是用\來間隔,即:com\test\mapper,然後就會生成一個名為com.test.mapper的資料夾,然後將UserMapper.xml放入其中

接著使用 maven 的 compile 命令

最後在生成的 target 目錄下,就會看到 Mapper 介面和 sql 對映檔案放置在同一個目錄下了

  1. 設定 SQL 對映檔案的 namespace 屬性為 Mapper 介面全限定名

這個步驟就是修改 sql 對映檔案namespace

的值,將namespace設定為對應的介面的全限定名

  1. 在 Mapper 介面中定義方法,方法名就是 SQL 對映檔案中 sql 語句的 id,並保持引數型別和返回值型別一致

在 sql 對映檔案中,可以看到idresultType兩個屬性,這個id對應的就是 Mapper 介面中的方法名稱,而resultType 對應的就是返回值型別,於是在UserMapper介面中新增如下方法:

  1. 修改mybatis-config.xml的路徑

由於第一步的 sql 對映檔案被放入了新的包中,所以這個地方需要修改以下對映的路徑

  1. 編碼

【Mybatis】簡介中快速入門介紹的差不多,這裡主要修改一個地方

也就是說執行 sql 查詢需要先用sqlSession獲得代理物件,然後用代理物件來執行。這樣就不用每次執行都填寫很長一串的namespace.id

細節:如果Mapper介面名稱和SQL對映檔名稱相同,並且在同一目錄下,則可以使用包掃描的方式簡化SQL對映檔案的載入,包掃描的配置應該寫在mybatis-config.xml檔案中,如下圖所示: