vs 生成get set_使用EasyCode+Lombok快速生成增删查改的代码

在Java后端开发过程中,往往会遇到需要实现对数据表进行增删查改的接口,这种任务难度比较低,但是操作比较繁琐,而且代码实现起来也是千篇一律的样式,下面是一种自己总结出来的快速生成增删查改代码的方法,采用IntelliJ IDEA环境中的Easycode+Lombok插件实现。


【EasyCode】
1、下载Easycode插件。

在主界面的导航栏中依次打开File->Settings->Plugins->Browse repositories…b81eef55863330717cf00f0b22c6ba5f.png

在弹出来的页面中搜索"EasyCode",点击右侧的"install"按钮进行下载。60276f639920fdd35ff1b15e02a9cbe1.png

2、在主界面的导航栏中依次打开View->Tool Windows->Database,调出侧边栏

fbbb897fb3bc21fdec4d6ee8e64fe9f6.png

3、配置数据库的连接,点击【+】->Data Source,可以选择自己的数据库类型,这里使用MySQL举例。

578223a00d8cf44c8ebdb7f362fda40e.png
说明文字配在图片上。7727a88b6e80389e0496d6393b3533f0.png
如图所示,已经添加好啦~
这个数据库的名字叫classroom,里面存在一张名为student的表。29ef273ea510aac546e681a53a4ed245.png

4、右击数据表,选择EasyCode->Generate Code

af15514a11c3806b9655b95eb59b657b.png
在弹出的信息框中的【Package】栏填写所生成的文件存放的地址,并勾选自己需要生成什么文件,最后点击OK。3df811f6836b4ea95fc3bedb0e9fe95a.png
文件的生成效果如下:71b92c742f4320af8b6dad17817e5751.png


【Lombok】

这个插件主要是通过注解减少实体类中的冗余代码,使代码看起来更清爽、简洁。当然也存在着一些在代码侵入性、可维护性等方面的问题争议,但根据笔者目前的开发经验来看,它的优点是远多于缺点的,大伙不妨度量一下这个插件的优劣性,可以一起来探讨喔~下面开始介绍Lombok插件的使用方法。

1、先下载Lombok插件,下载方法在上文已经提到。

ea886146363d6e786e3fd42a63f33957.png

2、Maven用户在pom.xml添加Lombok的依赖
        <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
3、使用@Data注解实现Lombok的功能

先看看使用前的效果,利用上文的Student实体类进行举例说明。当Student实体类生成的时候,总会带着许多get、set方法。a8be28dc9a877089eda1d290333aad5d.png
使用@Data注解之后的代码:1a3a1659a48f85d628f36ebe9ee186be.png
看起来就整洁许多了呢~


最后来介绍一下@Data注解的作用。通过编译后的.class文件可以看到此注解的说明:(1)为所有字段提供一个get方法。(2)为所有不被transient修饰的字段(即所有被序列化的字段)提供toString、hashCode、equals方法。(3)为所有不被final修饰的字段提供set方法。(4)为final修饰的变量提供一个构造函数。
相当于@Getter、@Setter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode五个注解的合体。73bd0e9c31cc050c68802ec80040728c.png
进入代码中所提供的文档地址:https://projectlombok.org/features/Data,我们可以看到关于get、toString、hashCode、equals、set、constructor方法的源码实例。下面直接贴上文档中的代码,笔者在里面加了一些注释,用于标识上述方法是在哪里进行实现的。

import java.util.Arrays;

public class DataExample {
private final String name;
private int age;
private double score;
private String[] tags;

//constructor方法
public DataExample(String name) {
this.name = name;
}

//get方法
public String getName() {
return this.name;
}

//set方法
void setAge(int age) {
this.age = age;
}

//get方法
public int getAge() {
return this.age;
}
//set方法
public void setScore(double score) {
this.score = score;
}

//get方法
public double getScore() {
return this.score;
}

//get方法
public String[] getTags() {
return this.tags;
}

//set方法
public void setTags(String[] tags) {
this.tags = tags;
}

//toString
@Override public String toString() {
return "DataExample(" + this.getName() + ", " + this.getAge() + ", " + this.getScore() + ", " + Arrays.deepToString(this.getTags()) + ")";
}

//内部方法,被下面的equals方法调用,用于判断入参与自身两者是否为同一个类的实例或者入参是否属于自身的子类
protected boolean canEqual(Object other) {
return other instanceof DataExample;
}

//equals方法
@Override public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof DataExample)) return false;
DataExample other = (DataExample) o;
if (!other.canEqual((Object)this)) return false;
if (this.getName() == null ? other.getName() != null : !this.getName().equals(other.getName())) return false;
if (this.getAge() != other.getAge()) return false;
if (Double.compare(this.getScore(), other.getScore()) != 0) return false;
if (!Arrays.deepEquals(this.getTags(), other.getTags())) return false;
return true;
}

//hashCode方法
@Override public int hashCode() {
final int PRIME = 59;
int result = 1;
final long temp1 = Double.doubleToLongBits(this.getScore());
result = (result*PRIME) + (this.getName() == null ? 43 : this.getName().hashCode());
result = (result*PRIME) + this.getAge();
result = (result*PRIME) + (int)(temp1 ^ (temp1 >>> 32));
result = (result*PRIME) + Arrays.deepHashCode(this.getTags());
return result;
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值