1 员工的crud
1.1 新增员工
思路步骤:
(1)弹出新增表单:
点击新增按钮 -->弹出dialog对话框(对话框里面放一个form新增表单)
add:function(){
//清空表单
employeeForm.form('clear');
//隐藏表单密码框
$("*[data-save]").show();
//开启验证
$("*[data-save] input").validatebox("enableValidation");
//弹出对话框
employeeDialog.dialog('open');
}
(2)编辑form表单里面的内容
//提交表单:
employeeForm.form('submit',{
url:url,
onSubmit: function(){
//重复密码验证 比较两个值是否相等 如果不相等 return false
//表示验证通过才能提交
return employeeForm.form("validate");
},
success:function(data){
var result = JSON.parse(data);//转成相应的json数据
if(result.success) {
employeeGrid.datagrid('reload');
}else{
$.messager.alert('提示信息','操作失败!,原因:'+result.msg,"error");
}
employeeDialog.dialog('close');
}
})
点击保存按钮 --》调用controller保存方法–》保存到数据库–》关闭对话框
1.2 修改
–弹出对话框(和新增对话框共用)
(1)判断是否选中修改的数据
(2)如果选中之后,弹出表单,
(3)把选中数据 回显到表单里面
edit:function(){
//获取表格里面是否选中的数据
var row = employeeGrid.datagrid('getSelected');
if(row){
//隐藏表单密码框
$("*[data-save]").hide();
//禁用验证
$("*[data-save] input").validatebox("disableValidation");
//弹出表单
employeeDialog.dialog('center').dialog('open');
//判断选中这行数据 是否存在department对象
if(row.department){
//取到部门id值
// name="department.id"
row["department.id"] =row.department.id;
}
//回显数据
employeeForm.form('load',row);
}else{
$.messager.alert('提示信息','请选中一条数据进行修改',"info");
}
}
–保存
和新增保存一样,多了一个id
save:function(){
var id = $("#employeeId").val();
var url="/employee/save";
if(id){
url="/employee/update?cmd=update";
}
//保存方法
employeeForm.form('submit',{
url:url,
onSubmit: function(){
//重复密码验证 比较两个值是否相等 如果不相等 return false
//表示验证通过才能提交
return employeeForm.form("validate");
},
success:function(data){
var result = JSON.parse(data);//转成相应的json数据
if(result.success) {
employeeGrid.datagrid('reload');
}else{
$.messager.alert('提示信息','操作失败!,原因:'+result.msg,"error");
}
employeeDialog.dialog('close');
}
})
}
1.3 修改的时候 数据丢失问题
丢失原因:
提交表单里面 没有相应的数据 导致提交更新的时候 把数据库的字段就更新为空。比如headImage字段
解决方案:
(1) 表单里面添加隐藏域
(2) 添加注解 @Coloumn(updatable=false) //在修改的时候不去更新
(3) springmvc注解ModelAttribute
a)把原来的数据查询出来
b)接收数据和原来数据进行合并
c)在提交的时候就有值了
@ModelAttribute("editEmployee")
public Employee beforeEdit(Long id,String cmd){
System.out.println("---------------------");
if(id != null && "update".equals(cmd)){
//根据id 查询老数据 删除和修改都要id值,只需要修改进入
Employee employee = employeeService.findOne(id);
return employee;
}else{
return null;
}
}
public AjaxResult update(@ModelAttribute("editEmployee") Employee employee){
//修改代码
return saveOrUpdate(employee);
}
1.4 解决n-to-n的问题
出现原因:修改一个持久化状态的主键值
解决方案:把关联对象清空
employee.setDepartment(null);
2 模板技术
第一个项目:freemark
2.1模板技术用途:
把动态资源(jsp)进行静态化(html)处理
(1)生成一个静态页面 --(用的比较多)
(2)代码生成器 (js jsp controller service respository query) – 我们不用 (最后一个项目)
配置模板 --生成代码
(3) 发送邮件模板
例子:
京东 淘宝 百度 --提高效率
2.2 为什么要做静态化处理:
动态资源 加载 肯定要静态资源要慢,比如动态页面数据,每次加载都需要查询数据库,所有速度就会很慢
2.3 模板技术原理
freemark 和velocity
模板+数据—>生成 效果(html /java)
freemark:
(1)导包
(2)写一个模板
(3)生成对应的内容
2.4 使用velocity
(1)导入依赖
(2)创建模板
(3)生成数据
以后使用最多 就是存值和取值