删除的业务逻辑
1、查询当前部门是否给其他部门作上级
2、 删除指定部门编号的部门数据
代码实现
test
@Test
public void Test02(){
String deptId = "33";
//1、查询有没有下级
int childDept = iDeptService.findChildDept(deptId);
l.info("test02 count="+childDept);
//2、删除当没有下级的
try {
if (childDept==0){
iDeptService.deleteDeptById(deptId);
}
} catch (Exception e) {
l.error("错误:"+e.getMessage());
}
}
service
@Override
public void deleteDeptById(String deptId) {
int childDept = iDeptDao.findDepts(deptId);
l.info("test02 count="+childDept);
//2、删除当没有下级的
try {
if (childDept==0){
iDeptDao.deleteById(deptId);
}
} catch (Exception e) {
l.error("错误:"+e.getMessage());
}
}
dao
int findDepts(String deptId);
void deleteById(String deptId);
mapper
<select id="findDepts" parameterType="String" resultType="int">
select count(*) from pe_dept where parent_id = #{deptId}
</select>
<delete id="deleteById" parameterType="String">
delete from pe_dept where dept_id = #{deptId}
</delete>
总结
当一个部门存在子部门时删除会因为外键导致失败,所以只能够删除没有下级部门的部门。