Mybatis基础学习之Lombok的简单使用

前言

小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。

这个Mybatis基础学习系列是用来记录我学习Mybatis框架基础知识的全过程 (这个系列是参照B站狂神的Mybatis最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!)


之后我将尽量以两天一更的速度更新这个系列,还没有学习Mybatis3框架的小伙伴可以参照我的博客学习一下;当然学习过的小伙伴,也可以顺便跟我一起复习一下基础。最后,希望能够和大家一同进步吧!加油吧!少年们!

特别提醒:如果对Mybatis基础学习系列感兴趣,可以阅读本系列往期博客:
第一篇Mybatis基础学习之初识Mybatis
第二篇Mybatis基础学习之第一个Mybatis程序
第三篇Mybatis基础学习之CRUD增删改查
第四篇Mybatis基础学习之万能的Map和模糊查询
第五篇Mybatis基础学习之配置解析(上篇)
第六篇Mybatis基础学习之配置解析(下篇)
第七篇Mybatis基础学习之使用ResultMap解决字段名不一致
第八篇Mybatis基础学习之日志工厂的简单使用
第九篇Mybatis基础学习之数据分页的简单使用
第十篇Mybatis基础学习之使用注解开发


今天我们来到了Mybatis基础学习的第十站:Lombok的简单使用。废话不多说,让我们开始今天的学习内容吧。

10.Lombok的简单使用

10.1 Lombok基础概念

10.1.1 什么是Lombok?

Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。

在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hasCodeequals这样的方法以及各种业务对象模型accessortoString等方法的大量时间。

对于这些方法,它能够在编译源代码期间自动帮助我们生成这些方法,并没有如反射那样降低程序性能

官方网址https://projectlombok.org/

10.1.2 核心内容

  • Java libraryJava库
  • plugs插件
  • build tools构建工具
  • with one annotation your class只需要在类的前面加注解

10.2 使用步骤

10.2.1 在IDEA中安装Lombok插件

  • File目录下的Settings(设置)中找到Plugins选项,搜索Lombok插件并且下载

在这里插入图片描述

10.2.2 在项目中导入Lombok的jar包

  • 在相应项目的pom.xml文件中导入资源依赖
<dependencies>
     <!-- lombok的资源依赖 -->
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.10</version>
    </dependency>
</dependencies>

10.3 Lombok中的重要注解

重点掌握注解

  • @Getter and @SetterJava实体类中的getter和setter方法
  • @FieldNameConstants字段、属性和常量
  • @ToString转化为字符串方法
  • @EqualsAndHashCode相等和哈希码
  • @AllArgsConstructor有参构造方法
  • @RequiredArgsConstructor and @NoArgsConstructor无参构造方法
  • @Data数据(使用最多)

其他注解了解即可

  • @Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger,
  • @CustomLog
  • @Builder
  • @SuperBuilder
  • @Singular
  • @Delegate
  • @Value
  • @Accessors
  • @Wither
  • @With
  • @SneakyThrows

10.4 Lombok中注解的使用

10.4.1 使用@Data注解

1.编写User实体类Java代码
package com.kuang.pojo;

import lombok.Data;

// 使用@Data注解
@Data
// user实体类
public class User {
    
    private int id; // 编号
    private String name; // 用户名
    private String password; // 密码
    
}
2.使用@Data注解后

在这里插入图片描述

结果自动生成无参构造方法get和set方法,以及toString方法hashcode方法equals方法

10.4.2 使用@AllArgsConstructor注解

1.编写User实体类Java代码
package com.kuang.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;

// 使用@Data注解, 引入无参构造、get、set、toString等方法
@Data
// 使用@AllArgsConstructor注解
@AllArgsConstructor
// User实体类
public class User {
    
    private int id; // 编号
    private String name; // 用户名
    private String password; // 密码
    
}
2. 使用@AllArgsConstructor注解后

在这里插入图片描述

结果加上@AllArgsConstructor注解后无参构造消失了!

3. 删除@AllArgsConstructor注解后

在这里插入图片描述

结果删除@AllArgsConstructor注解后有参构造又消失了

4. 使用总结

总结因此,如果显示的定义了有参构造方法后,则需要手动赋值无参构造方法

10.4.3 使用@NoArgsConstructor注解

1.编写User实体类Java代码
package com.kuang.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

// User实体类
@Data // 引入无参构造、get、set、toString等方法
@AllArgsConstructor // 引入有参构造方法
@NoArgsConstructor // 引入无参构造方法
public class User {
    
    private int id; // 编号
    private String name; // 用户名
    private String password; // 密码
    
}
2.使用有参构造和无参构造注解后

在这里插入图片描述

结果同时使用@AllArgsConstructor (有参构造) 注解和@NoArgsConstructor(无参构造) 注解后,有参构造方法和无参构造方法就都出现了!

10.4.4 使用@ToString注解

1. 编写User实体类Java代码
package com.kuang.pojo;

import lombok.ToString;

// 使用@ToString注解
@ToString
// User实体类
public class User {
    
    private int id; // 编号
    private String name; // 用户名
    private String password; // 密码
    
}
2. 使用@ToString注解后

在这里插入图片描述

结果引入了toString方法

10.4.5 使用@EqualsAndHashCode注解

1. 编写User实体类Java代码
package com.kuang.pojo;

import lombok.EqualsAndHashCode;

// 使用@EqualsAndHashCode注解
@EqualsAndHashCode
public class User {

    private int id; // 编号
    private String name; // 用户名
    private String password; // 密码
    
}
2. 使用@EqualsAndHashCode注解后

在这里插入图片描述

结果引入了equals方法hashCode方法

10.4.6 使用@Getter注解

1. 分析@Getter源码
package lombok;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

// 使用@Target注解, 作用范围为字段和类型(存在多个值,使用{}包围, 使用","隔开)
@Target({ElementType.FIELD, ElementType.TYPE})
// 使用@Retention注解, 设置保留策略为源文件
@Retention(RetentionPolicy.SOURCE)
// @Getter注解
public @interface Getter {
    
    AccessLevel value() default AccessLevel.PUBLIC;
    
    Getter.AnyAnnotation[] onMethod() default {};
    
    boolean lazy() default false;
    
    /** 
     * 使用@deprecated, 表示该方法已弃用
     */
    @Deprecated
    @Retention(RetentionPolicy.SOURCE)
    @Target({})
    public @interface AnyAnnotation {
    }
    
}
2. 编写User实体类Java代码
2-1 直接作用于类
package com.kuang.pojo;

import lombok.Getter;// 使用@Getter注解:直接作用于类
@Getter
// User实体类
public class User {

    private int id; // 编号
    private String name; // 用户名
    private String password; // 密码
    
}
2-2 作用于字段
package com.kuang.pojo;
import lombok.Getter;

// User实体类
public class User {
    
    // 使用@Getter注解:作用于字段
    @Getter
    private int id; // 编号
    
    @Getter
    private String name; // 用户名
    
    @Getter
    private String password; // 密码
    
}
3. 使用@Getter注解后

在这里插入图片描述

结果生成了对应的get方法!

10.5 Lombok的优缺点

优点

  • 通过注解的形式自动生成 构造器getter/setterequalshashCodetoString 等方法,提高了一定的开发效率
  • 让代码变得简洁,不用过多的去关注相应的方法
  • 属性做修改时,也简化了维护这些属性所生成的getter/setter方法

缺点

  • 不支持多种参数构造器的重载
  • 虽然省去了手动创建getter/setter方法的麻烦,但也大大降低源代码的可读性和完整性降低阅读源代码的舒适度

10.6 使用总结

Lombok虽然有很多优点,但Lombok更类似于一种IDE插件项目也需要依赖相应的jar包

Lombok依赖jar包是因为编译时要用它的注解,为什么说它又类似于插件?

因为在使用时,eclipse或者IntelliJ IDEA都需要安装相应的插件,在编译器编译时通过AST(抽象语法树)改变字节码生成变相的说它在改变Java的语法
它不像Spring的依赖注入或者mybatis的ORM(对象关系映射)一样是运行时的特性,而是编译时的特性
最不爽的地方就是对插件的依赖,虽然Lombok只是省去了一些人工生成代码的麻烦,但IDE都有快捷键来协助生成getter/setter等方法,也非常方便。


好了,今天的有关 Lombok的简单使用 的学习就到此结束啦。欢迎小伙伴们积极学习和讨论,喜欢的可以给蜗牛君点个关注,顺便来个一键三连。我们下期见,拜拜啦!


参考视频链接【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔の蜗牛rz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值