Spring CRUD示例中未更新编辑值

时间:2015-09-01 06:00:45

标签: java mysql spring

这是我的代码。当我选中复选框并单击编辑按钮时,值被正确获取。但是在mysql数据库和table中没有更新编辑的值。我在这个例子中使用了jdbc模板。“location”字段是选择选项值。

controller获取复选框值并从database获取数据。之后更新的值不会显示在表中。

HomeController.java

@RequestMapping("/edit")
public String update(Model model,@RequestParam Map<String,String> req){
    updateValue = new Integer(req.get("checkId"));
    List<Users> users = userdao.getUpdateRecord(updateValue);
    model.addAttribute("result",users);
    return "formedit";
}
@RequestMapping("/saveUpdate")
public String saveUpdate(Model model,@RequestParam Map<String,String> req){
    String name,storage,location,address;
    name = req.get("name");
    storage=req.get("storage");
    location=req.get("location");
    address = req.get("address");
    int row = userdao.updateRecord(updateValue,name,storage,location,address);
    String message = row+ "updated";
    model.addAttribute("message", message);
    result(model);
    return "home";
}

UsersDAO没有从形成页面获取更新值。

UsersDAO.java

public List<Users> getUpdateRecord(int updateValue){
    System.out.println("update value"+updateValue);
    String sql="select id,name,storage,location,address from customer where id="+updateValue;
    return jdbc.query(sql,new UsersMapper());
}

public int updateRecord(int id,String name,String storage,String location,String address){
    return jdbc.update("update customer set name = ?,storage = ?,location = ?,address=? where id = ?",id,name,storage,location,address);

formedit.jsp

<form role="form" action="saveUpdate" method="post" class="form-horizontal">
  <c:forEach var="row" items="${result}">
  <div class="row">
  <div class="col-md-6">
  <div class="form-group">
  <label class="control-label col-xs-4 text">Customer Name</label>
  <div class="col-xs-8">
  <input type="text" class="form-control" name="name" value=${row.name }>
  </div>
  </div>

<div class="form-group">
<label class="control-label col-xs-4 text">Storage Location*</label>
<div class="col-xs-8">
<input type="text" class="form-control" name="storage" value=${row.storage }>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-xs-4 text">Location</label>
<div class="col-xs-8">
<input type="text" class="form-control" name="location" value=${row.location }>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-4 text">Customer Address</label>
<div class="col-xs-8">
<textarea class="form-control" name="address">${row.address }</textarea>
</div>
</div>
</div>
<input type="submit" class="btn btn-success btn-md col-md-offset-6" value="Update">
</div>
</c:forEach>
</form>
}

1 个答案:

答案 0 :(得分:0)

因为这是错误的:

 return jdbc.update("update customer set name = ?,storage = ?,location = ?,address=? where id = ?",id,name,storage,location,address);

参数顺序不正确,它找不到带有值地址的id。