關於IDEA使用xml實現動態sql的問題

小白冉發表於2024-05-17

如上圖,我在mapper層編寫了一個list方法用於實現動態sql。

1.匯入使用xml檔案的mybatis依賴。

2.配置檔案的修改

.properties

.yml

  1. mybatis.mapper-locations=classpath:mapper/*.xml

    • 這個配置項指定了 MyBatis 對映器 XML 檔案的位置。
    • classpath:mapper/*.xml 表示 MyBatis 應該在類路徑的 mapper 目錄中查詢對映器 XML 檔案。
    • 這些 XML 檔案定義了 SQL 語句和結果對映。
  2. mybatis.type-aliases-package=com.example.big_event.pojo

    • 這個配置項指定了 MyBatis 應該在哪個包中查詢並註冊為型別別名的 Java 類。
    • 型別別名是可以在 MyBatis XML 配置檔案中使用的簡短名稱,代替完全限定的類名。
    • 例如,如果你有一個 com.example.big_event.pojo.User 類,你可以在對映器 XML 檔案中使用 User 來代替完整的類名。

namespace:填寫mapper層的類。
id:mapper層你所編寫的動態sql方法名

resultType:實體屬性類

注意:xml檔名稱要跟mapper層的檔名稱保持一致。

語句填寫好後就實現了xml檔案的基本配置了。

在使用動態SQL時,有些開發者選擇將SQL語句直接寫在方法上,使用依賴註解的方法來實現,而另一些開發者則選擇使用XML檔案來編寫動態SQL。兩者各有優缺點,選擇哪種方式主要取決於專案需求、團隊習慣和程式碼維護的考慮。下面將詳細探討這兩種方法的優缺點。

使用依賴註解的方法編寫動態SQL

優點:

  1. 簡潔明瞭:將SQL語句直接寫在方法上,程式碼集中在一個地方,便於檢視和理解。
  2. 方便除錯:在除錯時,可以直接看到SQL語句,方便快速定位問題。
  3. 程式碼一致性:使用依賴註解的方式,可以讓SQL和業務邏輯保持在同一個地方,增強程式碼的可讀性和一致性。

缺點:

  1. 複雜的SQL處理困難:對於複雜的動態SQL,使用註解會使方法變得非常複雜和難以維護。
  2. 程式碼膨脹:如果SQL語句較長或較複雜,方法體會變得臃腫,不利於程式碼的清晰和簡潔。
  3. 註解的限制:註解方式在某些情況下可能受到限制,不能靈活地處理所有動態SQL需求。

使用XML檔案實現動態SQL

優點:

  1. 靈活性高:XML檔案支援複雜的動態SQL生成,使用標籤(如 <if><choose><foreach> 等)可以靈活地拼接SQL語句。
  2. 程式碼清晰:將SQL與Java程式碼分離,可以使程式碼更清晰,業務邏輯和SQL語句各自獨立,便於維護。
  3. 易於修改:修改SQL語句時,不需要重新編譯Java程式碼,只需要修改XML檔案即可,方便部署和維護。
  4. 重用性強:可以將常用的SQL片段抽取成公用的XML片段,在多個地方重用,減少程式碼重複。

缺點:

  1. 除錯困難:由於SQL語句不直接在Java程式碼中,除錯時需要額外的步驟檢視生成的SQL語句。
  2. 學習成本:需要學習和掌握XML標籤的用法,對於新手來說,可能需要一些學習成本。
  3. 配置檔案管理:大量的XML檔案可能導致配置檔案的管理和維護變得複雜。

總結

使用哪種方法主要取決於專案的具體需求和團隊的偏好:

  • 專案規模較小,SQL語句簡單:可以考慮使用依賴註解的方法,簡潔直觀。
  • 專案規模較大,SQL語句複雜:建議使用XML檔案,便於SQL的靈活拼接和獨立維護。


相關文章