自学内容网 自学内容网

Springboot实现启用禁用账号

Controller类

    @PostMapping("/status/{status}")//status为路径参数
    @ApiOperation("启用禁用员工账号")
    public Result startOrStop(@PathVariable Integer status,Long id){
        log.info("启用禁用员工账号:{},{}",status,id);
        employeeService.startOrStop(status,id);
        return Result.success();
    }

Service类

    /**
     * 启用或禁用员工账号
     * @param status
     * @param id
     */
    public void startOrStop(Integer status, Long id){
//        Employee employee = new Employee();
//        employee.setStatus(status);
//        employee.setId(id);
//@Builder 是 Lombok 提供的一个注解,用于简化对象的构建过程
        Employee employee = Employee.builder()
                .status(status)
                .id(id)
                .build();

        employeeMapper.update(employee);
    }

Mapper.java类

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

Mapper.xml实现动态修改

    <update id="update" parameterType="Employee">
        update employee
        <set>
            <if test="status != null">status = #{status},</if>
        </set>
        where id = #{id};
    </update>

@Builder注解详解

@Builder 是 Lombok 提供的一个注解,用于简化对象的构建过程,尤其是在构建复杂对象时。通过使用 @Builder,你可以避免编写繁琐的构造函数和大量的 setter 方法。下面是对 @Builder 的详细解析:

基本用法

  1. 引入 Lombok: 首先,确保你的项目中已经引入了 Lombok。如果是 Maven 项目,可以在 pom.xml 中添加:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version> <!-- 请使用最新版本 -->
        <scope>provided</scope>
    </dependency>
    
  2. 使用 @Builder:

    import lombok.Builder;
    import lombok.ToString;
    
    @Builder
    @ToString
    public class User {
        private String name;
        private int age;
        private String email;
    }
    
  3. 构建对象:

    使用 User.builder() 方法来构建对象:

    User user = User.builder()
                    .name("Alice")
                    .age(30)
                    .email("alice@example.com")
                    .build();
    
    System.out.println(user);
    

特性

  • 可读性: 使用 @Builder 可以使对象构建的代码更加清晰和易于阅读。
  • 链式调用: 支持链式调用,使得属性设置更为简洁。
  • 可选参数: 可以选择只设置需要的参数,减少构造函数的复杂性。

高级用法

  1. 构造器参数: 可以结合其他 Lombok 注解,例如 @AllArgsConstructor@NoArgsConstructor,与 @Builder 一起使用。

  2. 静态方法: 可以在类中定义静态方法来提供更复杂的构建逻辑。

  3. 自定义构建器: 允许自定义构建器类,例如:

    @Builder(builderClassName = "CustomBuilder")
    public class User {
        private String name;
        private int age;
    }
    
  4. 嵌套 Builder: 可以用于嵌套的对象。例如,如果 User 有一个 Address 类型的字段,你也可以为 Address 类使用 @Builder 并在 User 中使用。

注意事项

  • 不可变对象: 如果希望构建的对象是不可变的(即没有 setter),可以将所有字段设置为 final
  • 泛型支持: @Builder 也支持泛型类型。

示例

import lombok.Builder;
import lombok.ToString;

@Builder
@ToString
public class Address {
    private String street;
    private String city;
    private String zipCode;
}

@Builder
@ToString
public class User {
    private String name;
    private int age;
    private Address address;
}

构建对象示例:

Address address = Address.builder()
                         .street("123 Main St")
                         .city("Springfield")
                         .zipCode("12345")
                         .build();

User user = User.builder()
                 .name("Alice")
                 .age(30)
                 .address(address)
                 .build();

总结

@Builder 提供了一种优雅且灵活的方式来创建对象,特别适合于有多个参数的类。通过使用 Lombok,可以大幅减少样板代码,提高开发效率。


原文地址:https://blog.csdn.net/weixin_62818371/article/details/142815651

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!