zl程序教程

您现在的位置是:首页 >  其他

当前栏目

lombook注解使用

2023-03-15 22:00:41 时间

1.@EqualsAndHashCode

	User user1 = new User();
    user1.setName("jiangxp");
    user1.setAge(18);
    user1.setId(1);

    User user2 = new User();
    user2.setName("jiangxp");
    user2.setAge(18);
    user2.setId(2);

两条user数据,ID完全不一样,结果明显是错的,没有做id的equals判断,修改为:

@EqualsAndHashCode(callSuper = true)才能得到正确结果.

2.@Builder

调用其他团队某个接口的时候发现对方定义的Option里面分成了十几个选项,但是没有提供链式调用,这样每次set值就要好几行代码,使用起来很不方便,代码也不美观。

UserExample userExample = UserExample.builder()
                .id(1)
                .name("aaa")
                .address("bbb")
                .build();

3.常用的几个注解:

@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法 @AllArgsConstructor: 注在类上,提供类的全参构造 @NoArgsConstructor: 注在类上,提供类的无参构造 @Setter: 注在属性上,提供 set 方法 @Getter : 注在属性上,提供 get 方法 @EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法 @Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log

4.@Accessors(chain=true)

链式访问,该注解设置chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。

@Data
@Accessors(chain=true)
public class User {
    private Integer id;
    private String name;
    private Integer age;

    public static void main(String[] args) {
        //开起chain=true后可以使用链式的set
        User user=new User().setAge(31).setName("pollyduan");//返回对象
        System.out.println(user);
    }

}

5.@TableName

@TableName("user")
public class UserBean {
    // ...
}

将 user 数据表和 UserBean 实体进行映射。

6.@ApiModel和@ApiModelProperty

@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 @ApiModel(value="user对象",description="用户对象user")