测试代码
@Test
public void test05(){
String deptId="3d00290a-1af0-4c28-853e-29fbf96a2722";
Dept dept = iDeptService.findById(deptId);
//1 模拟页面的修改
dept.setDeptName("ym");
dept.setCompanyName("吉首大学");
dept.setCompanyId("1");
Dept parent = new Dept();//下拉菜单
parent.setDeptId("100");
dept.setParent(parent);
dept.setState(0);//停用
//2 保存到数据库
iDeptService.updateDept(dept);
}
IDeptService
void updateDept(Dept dept);
DeptServiceImpl
@Override
public void updateDept(Dept dept) {
iDeptDao.update(dept);
}
IDeptDao
void update(Dept dept);
IDeptDao.xml
关键在于sql代码,需要根据插入的parent_id是否为空或者空字符串来进行判断。为空或者空自符串时,parent_id赋空值。
<update id="update" parameterType="dept">
update pe_dept set
dept_name = #{deptName } ,
<choose>
<when test="parent.deptId == null or parent.deptId == ''">
parent_id = NULL ,
</when>
<otherwise>
parent_id = #{parent.deptId} ,
</otherwise>
</choose>
state = #{state } ,
company_id = #{companyId } ,
company_name = #{companyName }
where dept_id= #{deptId}
</update>
DeptController
//action="${path}/system/dept/update.do"
@RequestMapping(path="/update",method ={ RequestMethod.GET, RequestMethod.POST})
public String update(Dept dept,String parentId){
Dept parent = new Dept();//下拉菜单
parent.setDeptId(parentId);
dept.setParent(parent);
//2 保存到数据库
iDeptService.updateDept(dept);
return "redirect:/system/dept/toList.do";//修改完成之后跳到列表页面
}
company-update.jsp
<form id="editForm" action="${path}/system/dept/update.do" method="post">
<input type="hidden" name="deptId" value="${dept.deptId}">
<div class="tab-pane active" id="tab-form">
<div class="row data-type">
<div class="col-md-2 title">部门名称</div>
<div class="col-md-10 data">
<input type="text" class="form-control" placeholder="部门名称" name="deptName" value="${dept.deptName}">
</div>
<div class="col-md-2 title">上级部门</div>
<div class="col-md-10 data line-height36">
<select class="form-control" name="parentId">
<option value="">成为顶级部门</option>
<c:forEach items="${list}" var="item">
<c:if test="${item.deptId != dept.deptId}">
<option ${dept.parent.deptId == item.deptId ?'selected':''} value="${item.deptId}">${item.deptName}</option>
</c:if>
</c:forEach>
</select>
</div>
<div class="col-md-2 title">状态</div>
<div class="col-md-10 data">
<div class="form-group form-inline">
<div class="radio"><label><input type="radio" ${dept.state==0?'checked':''} name="state" value="0">停用</label></div>
<div class="radio"><label><input type="radio" ${dept.state==1?'checked':''} name="state" value="1">启用</label></div>
</div>
</div>
<div class="col-md-2 title"></div>
<div class="col-md-10 data text-center">
<button type="button" onclick='document.getElementById("editForm").submit()' class="btn bg-maroon">保存</button>
<button type="button" class="btn bg-default" onclick="history.back(-1);">返回</button>
</div>
</div>
</div>
</form>