SpringBoot与MybatisPlus Lombok

简介: SpringBoot与MybatisPlus Lombok

一、Lombok概述

以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString/构造方法;打印日志;I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。

LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJO类中的冗长代码。

二、Lombok安装

如果IDEA版本在2020.3以上,不需要安装Lombok插件。如果IDEA版本在2020.3以下,需要安装Lombok插件,安装方法如下:

1、点击Flie->Setting->Plugins

2、搜索Lombok,安装

3、SpringBoot项目Lombok的引入方式为:

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

或者在创建项目的时候选择lombok依赖。

三、Lombok注解

3.1 @Setter、@Getter

作用:为类中的属性提供setter/getter方法

位置:类上方或属性上方,在属性上方则为属性生成setter/getter方法,在类上方表示给该类下的所有属性生成setter/getter方法

属性:设置setter和getter访问权限

//给类下的所有属性添加Setter/Getter
@Setter
@Getter
public class User {
  //给id属性添加Setter
  @Setter
  private Integer id;
  //给username的setter方法设置私有权限
  @Setter(AccessLevel.PRIVATE)
  private String username;
  //取消password的Getter方法
  @Getter(AccessLevel.NONE)
  private String password;
  private static int age;
  private final String address = null;
}

注:

  • static修饰的变量不生成getter和setter方法
  • final修饰的变量只生成getter方法

在IDEA中,按住Alt+7可以查看Lombok生成的代码.

3.2 @ToString

作用:生成toString方法,默认情况下它会按顺序打印类名称以及每个字段。

位置:类上方

@Setter
@Getter
//给User2设置一个toString方法,该方法不会显示password的值
@ToString(exclude = {"password"})
public class User2 {
  private Integer id;
  private String username;
  private String password;
}

3.3 @EqualsAndHashCode

在Java中,调用equals()可以判断两个对象是否相等。如果类不重写该方法,则判断两个引用是否指向同一个对象。

作用:生成equals和hashCode、canEqual方法。用于比较两个类对象是否相同。

位置:类上方

属性:

  • exclude: 比较时排除一些属性
  • of: 比较时只使用一些属性
@Setter
@Getter
@ToString
//@EqualsAndHashCode(exclude = {"password"})  排除password,只使用id,username对比及计算hash
@EqualsAndHashCode(of = {"username"})     //只使用username对比及计算hash
public class User3 {
  private Integer id;
  private String username;
  private String password;
}

3.4 @NonNull

作用:用于方法参数前,表示调用该方法时参数不能为null;用于属性上方,表示为该属性赋值时值不能为null。

位置:方法参数前或属性上方。

@Setter
@Getter
public class User4 {
  // 调用构造方法或setter给id赋值时,值不能为null
  @NonNull
  private Integer id;
  private String username;
  private String password;
  // 调用sleep方法时,time参数不能为null
  public void sleep(@NonNull Integer time){
    System.out.println("睡觉");
   }
}

初始化的时候可以是空。但是赋值的时候不能是空。

3.5 构造方法相关注解

作用:生成无参构造方法

位置:类上方

@RequiredArgsConstructor

作用:生成包含final和@NonNull修饰的属性的构造方法

位置:类上方

@AllArgsConstructor

作用:生成全参的构造方法

位置:类上方

@Setter
@Getter
//@NoArgsConstructor // 给类提供无参构造方法
@RequiredArgsConstructor // 生成两个username和sex参数的构造方法
@AllArgsConstructor//提供全参构造方法
public class User5 {
  @NonNull
  private Integer id;
  private String username;
  private String password;
  private final String sex;
}

3.6 @Data、@Builder

@Data

作用:相当于同时添加@Setter、@Getter、@ToString、@EqualsAndHashCode、 @RequiredArgsConstructor五个注解

位置:类上方

@Builder

作用:提供链式风格创建对象

位置:类上方

// 同时提供@Setter、@Getter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor
@Data
// 提供链式风格创建对象
@Builder
public class User6 {
  @NonNull
  private Integer id;
  private String username;
  private String password;
}
// 测试
@Test
public void testUser() {
  User6 user6 = User6.builder()
     .id(1)
     .username("itbaizhan")
     .password("itbaizhan")
     .build();
}

3.7 @Log

作用:在类中生成日志对象,在方法中可以直接使用

位置:类上方

@Data
@Log4j2
public class User7 {
  private Integer id;
  private String username;
  private String password;
  public void sleep(){
    log.info("调用睡觉方法");
    System.out.println("睡觉");
   }
}

注:针对不同的日志实现产品,有不同的日志注解,使用@Log表示使用Java自带的日志功能,除了@Log,还可以使用@Log4j@Log4j2@Slf4j等注解,来使用不同的日志产品。

3.8 @Cleanup、 @SneakyThrows

@Cleanup

作用:自动关闭资源,如IO流对象。

位置:代码前方

@SneakyThrows

作用:对方法中异常进行捕捉并抛出

位置:方法上方

@SneakyThrows
public void read() {
  @Cleanup FileInputStream fis = new FileInputStream("");
}


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
29 0
|
3天前
|
JSON Java 数据格式
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
|
13天前
|
Java 数据库连接 数据库
Springboot整合mybatisPlus开发
MyBatis-Plus是一个MyBatis的增强工具,旨在简化开发和提高效率。它在不修改原有MyBatis的基础上提供额外功能。要将MyBatis-Plus集成到SpringBoot项目中,首先通过Maven添加mybatis-plus-boot-starter和相应数据库驱动依赖,然后配置application.yml中的数据库连接信息,并指定Mapper类的扫描路径。Mapper接口可继承BaseMapper实现基本的CRUD操作。
|
13天前
|
XML Java 数据库连接
Springboot整合mybatisPlus操作数据库
MyBatis-Plus是MyBatis的增强工具,简化开发、提高效率。它提供官网文档,便于集成到SpringBoot项目中。集成步骤包括添加mybatis-plus-boot-starter和数据库驱动依赖,配置数据源,扫描Mapper类包。Mapper接口继承BaseMapper即可使用基本的CRUD操作。示例代码展示了Service层的增删改查实现。MyBatisPlus还支持逻辑删除、自动填充等功能,同时可与Mybatis XML配合使用,通过调整配置指定XML映射文件位置。
|
17天前
|
Java 数据安全/隐私保护 开发者
【SpringBoot】讲清楚日志文件&&lombok
【SpringBoot】讲清楚日志文件&&lombok
22 5
|
1月前
|
开发框架 Java 测试技术
XwFast,我开发了一个基于SpringBoot和MyBatisPlus的敏捷开发框架!
XwFast,我开发了一个基于SpringBoot和MyBatisPlus的敏捷开发框架!
33 1
|
1月前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
1月前
|
数据库
Springboot+mybatis-plus逆向工程生成代码器
Springboot+mybatis-plus逆向工程生成代码器
|
2月前
|
Java fastjson Apache
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
37 1
|
2月前
|
安全 算法 Java
SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架
SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架
29 0