开启生长之旅!这是我参与「日新方案 12 月更文挑战」的第21天,点击查看活动详情

一. 血案

今天壹哥的学生告诉我,他在项目中运用Mybatis结构查询时报错,提示无法创立对象。但自己仔细地检查了代码都没有发现过错,所以他就深夜拼命地给我发消息求救。我起床拿手机,还差点跌倒闪了我的老腰,我老婆看我这么着急还以为我有了小三儿,打得我满脸血呼刺啦的。

二. 原因和解决方案

然后我仔细看了下他的代码,发现Mybatis的运用的确没错,但发现代码中Lombok插件的@Builder注解运用有误。他只运用@Builder注解,导致实体类失去了默许的无参结构函数,终究导致Mybatis无法创立对象而引发了这个过错!其实他只要加上@NoArgsConstructor@AllArgsConstructor注解,就能够解决他的问题。

第二天,我问了班里其他人的idea中运用Lombok插件是否正常,结果发现有部分人告诉我插件无法正常运用。我看了后,发现有些学生的idea版别是2020.3版别,与之前大多数人运用的2020.1版别不同,造成Lombok插件的装置装备也有所差异。在此,我给大家分享一下在不同版别中,idea装置和装备Lombok插件的详细进程。

三. Lombok插件简介

我们知道,Lombok插件是目前Java中运用频率十分高的一款插件,能够在编译阶段主动生成实体类的常用办法。示例如下:

// 没有运用Lombok插件的实体类,需求手动写getter和setter,以及结构办法等
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

// 运用了Lombok插件的实体类
@Data // 此注解主动生成getter和setter,toString,equals和hashCode等办法
@NoArgsConstructor // 此注解生成无参结构函数
@AllArgsConstructor // 此注解生满足参结构函数
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

从上面的代码中我们能够看出,运用了Lombok后Java实体类的源码会变得十分简洁,且易于修正。那么在idea中该如何装置和运用Lombok插件呢?

四. Lombok插件在idea中的装置和装备

4.1 装置

idea2020.2之前的版别需求自己装置Lombok插件,能够如下操作:

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用
一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用
一桩Lombok插件引发的故障|带你学会Lombok的安装和使用在ideidea2020.2后边的版别中已经集成了Lombok插件,不必手动下载装置。

4.2 装备

idea在2020.2之前的版别中的装备:

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用
一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

idea2020.2版别之后的装备:

  1. 先勾选上图中的地方;
  2. 增加如下装备,不同的版别或许显示不一样,在VM options后边的框中增加参数。-Djps.track.ap.dependencies=false

五. 根本运用

5.1 在项目中导入lombok依靠

  • 在普通项目中导入:

    • 在项目中新建一个文件,将下载【下载地址】好的jar包lombok-1.18.12.jar复制到项目中,并增加为library。
  • 在maven项目中导入。

在pom.xml中的依靠处增加依靠

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

5.2 运用

Lombok插件的运用比较简单,就是在实体类中,只需求写入相应的特点,然后在类上面增加相应的注解即可。例如:

// 运用了Lombok插件的实体类
@Data // 此注解主动生成getter和setter,toString,equals和hashCode等办法
@NoArgsConstructor // 此注解生成无参结构函数
@AllArgsConstructor // 此注解生满足参结构函数
@Builder // 增加相应的实体类的构建器
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

5.3 常用注解介绍

接下来我给大家介绍一下Lombok插件中的常用注解:

  • @Setter@Getter :对类中的特点生成相应的getter和setter办法。

  • @ToString :生成toString()办法。该注解有以下特点:

    • callSuper:是否输出父类的toString()办法,默以为false。
    • includeFieldNames:是否包括字段名称,默以为true。
    • exclude:扫除生成到toString办法中的字段。
  • @EqualsAndHashCode :生成equals()办法和hashCode()办法。

  • @NoArgsConstructor :生成无参结构办法。

  • @AllArgsConstructor :生满足参结构办法。

  • @Data :相当于@Setter + @Getter + @ToString + @EqualsAndHashCode

  • @NonNull:判断是否为空,假如为空,则抛出java.lang.NullPointerException。

  • @Builder :生成构建器。注意: 会主动生满足参结构办法,或许会导致默许无参结构办法失效。

这些注解的详细用法如下:

@Builder
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}
public class TestMain {
    public static void main(String[] args) {
    // 运用Builder创立Student对象
        final Student student = Student.builder()
                .id(1)
                .name("张三")
                .age(20)
                .build();
        System.out.println(student);
    }
}

一桩Lombok插件引发的故障|带你学会Lombok的安装和使用

现在你知道Lombok插件是怎么正确装置装备,以及运用的了吗?假如你还有什么其他疑问,能够在评论区留言哦。跟着壹哥混,一天饿三顿,不对,是天天吃馄饨。