如何应对面临批量数据时如何提交给后台
方式1:
使用JSON格式
后台功能接受实现使用@ResponseBody
前端当有多行数据的时候添加到一个数组再通过JSON格式到后台List接收
@RequestMapping(value = "/emp01",method = RequestMethod.POST, produces = "application/json")
@ResponseBodypublic String empAdd02(@RequestBody Listlist){for(Employee e: list) {
employeeMapper.insert(e);
}return "{\"msg\":\"succeed\"}";
}
该参数为一个员工对象集合
以下是前端:
批量添加员工text-align: center;
height: 40px;
line-height: 40px;
}
.tab{
background-color: #F8F8F8;
}
编号姓名性别学历月薪添加移除
请选择
男
女
请选择
本科
专科
硕士
博士
编号 | 姓名 | 性别 | 学历 | 月薪 |
---|---|---|---|---|
${emp.number} | ${emp.empName} | ${emp.empSex} | ${emp.education} | ${emp.monthly} |
var tbody= $("#tbody01");
trNode=tbody.clone();
tbody.on("click", " .empAdd", function () {
$("#tbody01").append(trNode.clone());
});
tbody.on("click",".empRem",function () {
var num= $("tr",tbody).length;if( num === 1){
alert("最后一行不能删除");return false;
}
$(this).parent().parent().remove();
});
});/*数组*/$("#addAll").click(function(){
var list=[];
$("#tbody01 tr").each(function (i,obj) {
list.push(
{
number:$("input[name=number]",obj).val(),
empName:$("input[name=empName]",obj).val(),
empSex:$("select[name=empSex]",obj).val(),
education:$("select[name=education]",obj).val(),
monthly:$("input[name=monthly]",obj).val()
}
);
});
console.log(list);
$.post({
url:"/emp01",
contentType:"application/json;charset=utf-8",
data:JSON.stringify(list)
}).done(function (data) {if(data.msg === "succeed"){
window.location.href= "/eee";
}
});
});
方式2:
传统的form表单
此时使用form表单的话如有多个tr的批量数据
后台的话就需要借助一定集合类来实现了
packagecom.dz147.entity;importjava.util.List;public classEmpList {public ListaddEmp;
@OverridepublicString toString() {return "EmpList{" +
"addEmp=" + addEmp +
'}';
}public ListgetAddEmp() {returnaddEmp;
}public void setAddEmp(ListaddEmp) {this.addEmp =addEmp;
}
}
里面是个员工集合字段做为存储批量数据的作用
通过form表单POST方法提交到controller
方法第二参数为集合类对象
@RequestMapping(value = "/empAdd", method =RequestMethod.POST)publicString empAdd(Model model,EmpList empList){for(Employee emp:empList.addEmp) {
employeeMapper.insert(emp);
}return "redirect:/emp";
}
通过对象得到List集合对象
循环取出单个对象再往数据库添加
前端如何实现对集合对象赋值呢
表单的name 通过addEmp[0].id(通过存储对象[0]表示第一个对象点某个字段)
EmpList 类相当于中转站一样存储对象。
批量添加员工table tr{text-align:center;height:40px;line-height:40px;
}table tr:hover{background-color:#F8F8F8;
}
编号姓名性别学历月薪添加移除
请选择
男
女
请选择
本科
专科
硕士
博士
编号姓名性别学历月薪${emp.number}${emp.empName}${emp.empSex}${emp.education}${emp.monthly}/*数组*/
vari=0;functionadd(){
i++;vart="
" +"
" +"
请选择" +"男" +
"女
" +"
请选择" +"专科" +
"硕士" +
"博士
" +"
" +"
" +"
";vartable=document.getElementById("emps_table").innerHTML;table+=t;
document.getElementById("emps_table").innerHTML=table;
}functionrem(obj){if(i>0){
i--;
obj.parentElement.parentElement.remove();
}else{
alert("不能再移除了!")
}
}