部门修改后台
TestDeptService
@Test
public void test05(){
String deptId="f2b9573f-c774-4464-8305-a8b2b1241765";
Dept dept=service.findById(deptId);
l.info("test05 dept1="+dept);
//1 模拟页面的修改
//部门名称
dept.setDeptName("js");
dept.setCompanyId("1");
dept.setCompanyName("吉首大学");
//上级部门
Dept parent = new Dept();
parent.setDeptId("100");
dept.setParent(parent);
//状态
dept.setState(0);
l.info("test05 dept2="+dept);
//2 保存到数据库
service.updateDept(dept);
}
IDeptService
//更新编辑页面的部门数据
void updateDept(Dept dept);
DeptServiceImpl
@Override
public void updateDept(Dept dept) {
dao.update(dept);
}
IDeptDao
void update(Dept dept);
IDeptDao.xml
<update id="update" parameterType="dept">
update pe_dept set
dept_name = #{deptName },
parent_id = #{parent.deptId },
state = #{state },
company_id = #{companyId },
company_name = #{companyName}
where dept_id=#{deptId}
</update>
在所有的更新中,只有id值 不能进行修改
部门修改前台
dept-list.jsp
${path}/system/dept/toUpdate.do?deptId=${dept.deptId}
dept-update.jsp
${path}/system/dept/toUpdate.do?deptId=${dept.deptId}
部门更新测试
bug1:自己选自己作上级部门
解决方法
——通过if标签来判断
<select class="form-control" name="parentId">
<option value="" disabled="disabled">请选择</option>
<option value="">成为顶级部门</option>
<c:forEach items="${list}" var="item">
<%-- dept表示正在编辑的部门数据,不能选自己作为上级部门--%>
<c:if test="${dept.deptId != item.deptId}">
<option ${dept.parent.deptId == item.deptId ?'selected':''} value="${item.deptId}">${item.deptName}</option>
</c:if>
</c:forEach>
</select>
bug2:选择自己作为顶级部门报错
问题
—— 当选择顶级部门时,提交的parent_id为空字符串
解决方法
——
mybatis动态标签-if标签
- (1)if标签是什么?
Mybatis提供的动态sql的标签支持 - (2)if标签有什么用?
可以根据值编写条件,如果条件成立,拼接sql否则不拼接 - (3)if标签如何使用?
》》 1 if标签的test属性必填,一般只用true或false作为结果。
》》 2 判断条件property != null或 property == null,适用于任何类型的字段,用于判断属性值是否为空。
》》 3 当有多个判断条件时,使用and或or
<update id="update" parameterType="dept">
update pe_dept set
dept_name = #{deptName },
<if test="parent.deptId == null or parent.deptId == ''">
parent_id = NULL,
</if>
<if test="parent.deptId != null and parent.deptId != ''">
parent_id = #{parent.deptId },
</if>
state = #{state },
company_id = #{companyId },
company_name = #{companyName}
where dept_id=#{deptId}
</update>
mybatis动态标签-choose标签
<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>