如上圖,我在mapper層編寫了一個list方法用於實現動態sql。
1.匯入使用xml檔案的mybatis依賴。
2.配置檔案的修改
.properties
.yml
-
mybatis.mapper-locations=classpath:mapper/*.xml
:- 這個配置項指定了 MyBatis 對映器 XML 檔案的位置。
- 值
classpath:mapper/*.xml
表示 MyBatis 應該在類路徑的mapper
目錄中查詢對映器 XML 檔案。 - 這些 XML 檔案定義了 SQL 語句和結果對映。
-
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
優點:
- 簡潔明瞭:將SQL語句直接寫在方法上,程式碼集中在一個地方,便於檢視和理解。
- 方便除錯:在除錯時,可以直接看到SQL語句,方便快速定位問題。
- 程式碼一致性:使用依賴註解的方式,可以讓SQL和業務邏輯保持在同一個地方,增強程式碼的可讀性和一致性。
缺點:
- 複雜的SQL處理困難:對於複雜的動態SQL,使用註解會使方法變得非常複雜和難以維護。
- 程式碼膨脹:如果SQL語句較長或較複雜,方法體會變得臃腫,不利於程式碼的清晰和簡潔。
- 註解的限制:註解方式在某些情況下可能受到限制,不能靈活地處理所有動態SQL需求。
使用XML檔案實現動態SQL
優點:
- 靈活性高:XML檔案支援複雜的動態SQL生成,使用標籤(如
<if>
、<choose>
、<foreach>
等)可以靈活地拼接SQL語句。 - 程式碼清晰:將SQL與Java程式碼分離,可以使程式碼更清晰,業務邏輯和SQL語句各自獨立,便於維護。
- 易於修改:修改SQL語句時,不需要重新編譯Java程式碼,只需要修改XML檔案即可,方便部署和維護。
- 重用性強:可以將常用的SQL片段抽取成公用的XML片段,在多個地方重用,減少程式碼重複。
缺點:
- 除錯困難:由於SQL語句不直接在Java程式碼中,除錯時需要額外的步驟檢視生成的SQL語句。
- 學習成本:需要學習和掌握XML標籤的用法,對於新手來說,可能需要一些學習成本。
- 配置檔案管理:大量的XML檔案可能導致配置檔案的管理和維護變得複雜。
總結
使用哪種方法主要取決於專案的具體需求和團隊的偏好:
- 專案規模較小,SQL語句簡單:可以考慮使用依賴註解的方法,簡潔直觀。
- 專案規模較大,SQL語句複雜:建議使用XML檔案,便於SQL的靈活拼接和獨立維護。