首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MyBatis 映射器接口多參數傳遞的 parameterType 處理方案

     編輯:程式設計綜合問答

問題背景

MyBatis 映射器接口方法定義多個參數時:

List<User> selectTypeAllUser(int type, String name);

XML 中如何正確綁定 parameterType 並引用參數?

解決方案:使用 Map 自動封裝

MyBatis 會自動將多參數封裝為一個 Map<String, Object>,鍵名預設為 param1, param2... 或參數名(若啟用 @Param 註解)。最佳實踐是顯式指定鍵名:

1. 接口加註解(推薦)

List<User> selectTypeAllUser(@Param("type") int type, @Param("name") String name);

2. XML 直接引用鍵名

<select id="selectTypeAllUser" resultType="User">
  SELECT * FROM user_table
  WHERE type = #{type}
  AND name LIKE CONCAT('%', #{name}, '%')
</select>

錯誤寫法辨析

  • parameterType="int" 或 parameterType="String" 僅適用於單參數。
  • 傳入實體對象需屬性名與參數名一一對應,且需確保對象非空。

進階:手動構建 Map 傳入

Map<String, Object> params = new HashMap<>();
params.put("type", 1);
params.put("name", "張三");
mapper.selectTypeAllUser(params); // 接口定義為 selectTypeAllUser(Map params)

總結

多參數情況下,加 @Param 註解 + XML 直接用 #{參數名} 是最清晰、最不易出錯的方式,無需顯式聲明 parameterType。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved