开启生长之旅!这是我参与「日新方案 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插件的实体类
@Data // 此注解主动生成getter和setter,toString,equals和hashCode等办法
@NoArgsConstructor // 此注解生成无参结构函数
@AllArgsConstructor // 此注解生满足参结构函数
public class Student {
private Integer id;
private String name;
private Integer age;
}
从上面的代码中我们能够看出,运用了Lombok后Java实体类的源码会变得十分简洁,且易于修正。那么在idea中该如何装置和运用Lombok插件呢?
四. Lombok插件在idea中的装置和装备
4.1 装置
idea2020.2之前的版别需求自己装置Lombok插件,能够如下操作:
在ideidea2020.2后边的版别中已经集成了Lombok插件,不必手动下载装置。
4.2 装备
idea在2020.2之前的版别中的装备:
idea2020.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>
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;
}
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插件是怎么正确装置装备,以及运用的了吗?假如你还有什么其他疑问,能够在评论区留言哦。跟着壹哥混,一天饿三顿,不对,是天天吃馄饨。