业务场景:
一张表结构为:用户id,姓名,年龄。用户提交表单修改数据时候只是修改姓名的时候,后台要先从数据库获取原始数据到实体,然后修改用户名,最后保存数据库。
原始数据 [uid=123, uname=说易事, age=25]
修改数据库的数据 [uid=123, uname=ZhangSan, age=25]
代码片段:
提交的表单:
pageEncoding="UTF-8"%>
html>
Hello World !
uid:
uname:
控制器:package com.shuoeasy.springmvc;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@RequestMapping("/home")
@Controller
public class Home {
/**
* 第一步:先获取数据库的数据(这里不是直接给页面请求的,提供给springmvc使用而已)
* 被@ModelAttribute注释的方法会在此controller每个方法执行前被执行
* @param uid
* @param map
*/
@ModelAttribute
private void getUser(@RequestParam(value="uid",required=false) Integer uid,
Map map){
if(uid != null){
// 模拟从数据库获取数据
User u = new User();
u.setUid(123);
u.setUname("说易事");
u.setAge(25);
map.put("user", u);
System.out.println("数据库数据 User=" + u);
}
}
/**
* 第二步:修改用户信息,真正请求的地址
* 路径 : home/update
*/
@RequestMapping("/update")
public String showPage(User user){
System.out.println("整理后数据 User=" + user);
// 写入数据库代码略
return "home_index";
}
}
控制台输出啊:数据库数据 User=User [uid=123, uname=说易事, age=25]
整理后数据 User=User [uid=123, uname=ZhangSan, age=25]