MyBatis 映射器接口方法定義多個參數時:
List<User> selectTypeAllUser(int type, String name);
XML 中如何正確綁定 parameterType 並引用參數?
MyBatis 會自動將多參數封裝為一個 Map<String, Object>,鍵名預設為 param1, param2... 或參數名(若啟用 @Param 註解)。最佳實踐是顯式指定鍵名:
List<User> selectTypeAllUser(@Param("type") int type, @Param("name") String name);
<select id="selectTypeAllUser" resultType="User">
SELECT * FROM user_table
WHERE type = #{type}
AND name LIKE CONCAT('%', #{name}, '%')
</select>
parameterType="int" 或 parameterType="String" 僅適用於單參數。Map<String, Object> params = new HashMap<>();
params.put("type", 1);
params.put("name", "張三");
mapper.selectTypeAllUser(params); // 接口定義為 selectTypeAllUser(Map params)
多參數情況下,加 @Param 註解 + XML 直接用 #{參數名} 是最清晰、最不易出錯的方式,無需顯式聲明 parameterType。