在MyBatis中,可以通過@Param
注解和#{}
占位符來接收Map類型的參數。
首先,在SQL語句中使用#{key}
占位符來引用Map中的值。例如:
<select id="selectUser" resultType="User">
SELECT * FROM user WHERE id = #{id} AND name = #{name}
</select>
然后,在方法參數中使用@Param
注解來標識Map類型的參數,并在#{}
占位符中使用Map中的鍵。例如:
@Select("SELECT * FROM user WHERE id = #{id} AND name = #{name}")
User selectUser(@Param("id") int id, @Param("name") String name);
如果參數是一個復雜的Map對象,可以使用@Param
注解來指定參數名稱,然后在SQL語句中使用#{paramName.key}
來引用Map中的值。例如:
@Select("SELECT * FROM user WHERE id = #{param.mapKey} AND name = #{param.mapValue}")
User selectUser(@Param("param") Map<String, Object> paramMap);
在調用方法時,可以傳遞一個包含鍵值對的Map參數。例如:
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", 1);
paramMap.put("name", "Alice");
User user = userDao.selectUser(paramMap);
注意,在XML配置文件中使用@Param
注解時,需要將useActualParamName
設置為true
,以便使得MyBatis能夠正確地解析參數名稱。例如:
<settings>
<setting name="useActualParamName" value="true" />
</settings>