首先controller层接受一个map类型的字符串
@RequestMapping("/updateContractData")
public AdpResponse updateContractData(@RequestParam("map") String data) {
//将字符串转换成map,这个map就是最后传到xml中的map。
Map map = JSON.parseObject(data, HashMap.class);
String guid = (String) map.get("GUID");
trainActivityService.updateContractData(map,guid);
AdpResponse adpResponse = new AdpResponse();
return adpResponse;
}
再看一下dao层参数名
//dao层是以map<object,object>类型的参数map
void updateContractData(@Param("map")Map<Object, Object> map, @Param("GUID")String GUID);
接下来是重点,注释一定要看
//通过map.entrySet()接收到,然后循环获取map中的key和value
//!!!!!! 但是这里的key 只能用${key}来获取,不能通过#获取,因为#是占位符,$是拼接,
//还有就是用不用update标签都可以 ,你也可以是用select标签,都能实现,不知道算不算mybatis 的bug
<update id="updateContractData" resultType="String">
update cys_contract_2020 set
<foreach collection="map.entrySet()" item="value" index="key" separator=",">
${key} = #{value}
</foreach>
where GUID = #{GUID}
</update>