saas-export项目-部门管理-部门更新

部门修改后台

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值