SpringBoot与MybatisPlus Lombok

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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日志并进行多维度分析。
相关文章
|
3月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
613 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
3月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
196 1
|
3月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
184 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
4月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
4月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
3月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
138 0
|
4月前
|
前端开发 JavaScript Java
技术分享:使用Spring Boot3.3与MyBatis-Plus联合实现多层次树结构的异步加载策略
在现代Web开发中,处理多层次树形结构数据是一项常见且重要的任务。这些结构广泛应用于分类管理、组织结构、权限管理等场景。为了提升用户体验和系统性能,采用异步加载策略来动态加载树形结构的各个层级变得尤为重要。本文将详细介绍如何使用Spring Boot3.3与MyBatis-Plus联合实现这一功能。
150 2
|
5月前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
384 1
|
5月前
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。
|
5月前
|
数据库
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
这篇文章介绍了如何在基于SpringBoot+Vue+MybatisPlus的项目中使用elementUI的dialog组件进行用户信息的添加和删除操作,包括弹窗表单的设置、信息提交、数据库操作以及删除前的信息提示和确认。
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)