阅读量:2
在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>