update 不报错 但是不修改值得原因之一
第一种
ServiceImpl 如果使用
1 public void updateEmp(Integer id,Emp emp) { 2 // TODO Auto-generated method stub 3 Map<String,Object> map = new HashMap<String,Object>(); 4 map.put("id", id); 5 map.put("emp", emp); 6 dao.updateEmp(map); 7 }
则 EmpMapper.xml
1 <update id="updateEmp" parameterType="java.util.Map"> 2 3 update Emp set empname=#{emp.empname},empbirth=#{emp.empbirth},5 </update>
里修改对象都需要
#{emp.empname}
第二种
update 方法post 里 如果参数没有写入ID
1 @RequestMapping(value="/update.do",method=RequestMethod.GET) 2 public String update(Model model,Integer id){ 3 Station s = empService.getEmpById(id); 4 5 model.addAttribute("emp", s); 6 7 return "houtai/back/emp/update"; 8 9 } 10 11 @ResponseBody 12 @RequestMapping(value="/update.do",method=RequestMethod.POST) 13 public String update(Station emp){ 14 empService.updateEmp(emp); 15 16 return "true"; 17 18 }
@ResponseBody 这个注释的意思 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
jsp 页面里 修改 这一项代码,这个@ResponseBody 返回字符串 如 : 修改方法中 return "true"
则 jsp 页面
如 : data=="true"
1 function updateDept(){ 2 var id =$("input:first").val(); 3 $("#formupdate").ajaxSubmit({ 4 5 url:"<%=path%>/Emp/update.do?id="+id, 6 type:"post", 7 resetForm:false, 8 success:function(data){ 9 if(data=="true"){ 10 //获取父窗口的window对象 11 var win = art.dialog.open.origin; 12 //调用父窗口的js方法refresh(); 13 win.refresh(); 14 //关闭对话框 15 art.dialog.close(); 16 }else{ 17 alert(data.message); 18 } 19 }, 20 error:function(xhr,textStatus,errorThrown){ 21 alert("修改员工失败,请重试"); 22 } 23 }); 24 }
ServiceImpl
1 public void updateStation(Station emp) { 2 // TODO Auto-generated method stub 3 4 dao.updateEmp(emp); 5 6 }
则 xml 里 sql 语句为
<update id="updateEmp" parameterType="Emp" >
update Emp set empname=#{empname},empbirth=#{empbirth} where empid=#{empid}
</update>
就不需要第一种SQL。