控制器模块
@PutMapping(path = "/update/{id}", consumes = "application/json")
public HashMap update(
@PathVariable("id") Long id,
@RequestBody Map requestBody) {
System.out.println(id); //可以输出值“1”
System.out.println(requestBody.get("name")); //可以输出值“徐大爷”
int row = userm.updateUser(requestBody,id);
HashMap mp = new HashMap();
mp.put("code",200);
Object[] objectArray = new Object[0];
mp.put("data",objectArray);
return mp;
}
关联的接口映射
public interface UsersMapper extends BaseMapper<Users> {
IPage findById(IPage page,@Param("id") Long id);
int updateUser(@Param("requestBody") Map requestBody,@Param("id") Long id);
}
MybatisPlus的xml文件
<update id="updateUser">
update users set name = #{requestBody.get("name")} where id=#{id}
</update>
#{id}
是能获取的,经过测试,如果我写死
<update id="updateUser">
update users set name = "11112222" where id=#{id}
</update>
是能更新成功的,因此就是 #{requestBody.get("name")}
的问题,为什么无法获取值呢?
请求传参是
http://localhost:7070/mapper/update/1
传递参数
{
"name":"徐大爷",
"id":1
}
MybatisPlus的xml文件,MyBatis 不支持直接在 XML 中调用 Map 的 get 方法
将
#{requestBody.get("name")}
改为#{requestBody.name}