SpringBoot启动禁用员工账号(动态sql通用修改)

文章详细描述了在员工管理系统中,如何实现启用/禁用员工账号的功能,包括产品原型、业务规则、接口设计(包括路径参数和返回数据结构)、以及如何在Controller、Service和Mapper层进行相应的操作,还涉及到了编辑员工信息的功能和数据库更新策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求分析与设计

一:产品原型

在员工管理列表页面,可以对某个员工账号进行启用或者禁用操作。账号禁用的员工不能登录系统,启用后的员工可以正常登录。如果某个员工账号状态为正常,则按钮显示为 "禁用",如果员工账号状态为已禁用,则按钮显示为"启用"。

启禁用员工原型:

业务规则:

  • 可以对状态为“启用” 的员工账号进行“禁用”操作

  • 可以对状态为“禁用”的员工账号进行“启用”操作

  • 状态为“禁用”的员工账号不能登录系统

二:接口设计

1). 路径参数携带状态值。

2). 同时,把id传递过去,明确对哪个用户进行操作。

3). 返回数据code状态是必须,其它是非必须。

细节:

  • 包含路径参数和普通参数,路径参数需要用@PathVariable注释

代码开发

controller类

为什么不用dto类封装了,因为只有两个参数,参数很少时可以不用封装。

在sky-server模块中,根据接口设计中的请求参数形式对应的在 EmployeeController 中创建启用禁用员工账号的方法:

	/**
     * 启用禁用员工账号
     * @param status
     * @param id
     * @return
     */
    @PostMapping("/status/{status}")
    @ApiOperation("启用禁用员工账号")
    public Result startOrStop(@PathVariable Integer status,Long id){
        log.info("启用禁用员工账号:{},{}",status,id);
        employeeService.startOrStop(status,id);//后绪步骤定义
        return Result.success();
    }

细节:

  • 路径参数需要用@PathVariable注释

Service类

	/**
     * 启用禁用员工账号
     *
     * @param status
     * @param id
     */
    public void startOrStop(Integer status, Long id) {
        Employee employee = Employee.builder()
                .status(status)
                .id(id)
                .build();

        employeeMapper.update(employee);
    }

细节:

  • 其实可以在mapper层写一个通过id修改status值的方法,但是这样的话,如果通过id值想要修改其他参数,比如说员工姓名、员工电话等,就需要再写别的修改方法进行修改,所以不如使用动态sql,用来解决所有通过id修改参数的问题。
  • 因为要使用动态sql,所以直接传status和id其实不好,需要先把其封装为实体类。
  • 因为Employee实体类声明了@Builder注解,所以可以使用构建器builder().build()链式构建,这样就不需要一个一个设置参数了。

Mapper类

	/**
     * 根据主键动态修改属性
     * @param employee
     */
    void update(Employee employee);

动态sql:

<update id="update">
        update employee
        <set>
            <if test="name != null and name != ''">name = #{name},</if>
            <if test="username != null and username!= ''">username = #{username},</if>
            <if test="password != null and password != ''">password = #{password},</if>
            <if test="phone != null and phone != ''">phone = #{phone},</if>
            <if test="sex != null and sex != ''">sex = #{sex},</if>
            <if test="idNumber != null and idNumber != ''">id_Number = #{idNumber},</if>
            <if test="updateTime != null and updateTime != ''">update_Time = #{updateTime},</if>
            <if test="updateUser != null and updateUser != ''">update_User = #{updateUser},</if>
            <if test="status != null and status != ''">status = #{status},</if>
        </set>
        where id = #{id}
    </update>

一定要有不等于空串,不然前端不想更改但是返回空串,数据就会被空串替代

修改员工模块快速讲解

在员工管理列表页面点击 "编辑" 按钮,跳转到编辑页面,在编辑页面回显员工信息并进行修改,最后点击 "保存" 按钮完成编辑操作。

员工列表原型:

修改页面原型

注:点击修改时,数据应该正常回显到修改页面。

根据上述原型图分析,编辑员工功能涉及到两个接口:

  • 根据id查询员工信息

  • 编辑员工信息

1). 根据id查询员工信息

2). 编辑员工信息

细节:

  • 查询到员工信息后,可以加一行,加密密码

        Employee employee = employeeMapper.getById(id);
        employee.setPassword("****");

  • 修改的方法是Put
  • DTO对象别忘了可以通过对象属性拷贝快速转化为实体类对象,拷贝后还需要补充那些DTO中没有的属性
    • BaseContext.getCurrentId()获取当前操作账号id(TreadLocal)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值