EasyCode和Lombok插件的使用,一键生成所需代码(两大代码神器)

文章介绍了如何在SpringBoot项目中使用Lombok简化DAO层和业务层的编码,涉及TAdmin实体类的CRUD操作,以及如何通过Lombok注解自动生成getter/setter、构造器和toString方法,提高开发效率。
摘要由CSDN通过智能技术生成

from t_admin

and id = #{id}

and username = #{username}

and password = #{password}

and name = #{name}

and sex = #{sex}

limit #{pageable.offset}, #{pageable.pageSize}

select count(1)

from t_admin

and id = #{id}

and username = #{username}

and password = #{password}

and name = #{name}

and sex = #{sex}

insert into t_admin(username, password, name, sex)

values (#{username}, #{password}, #{name}, #{sex})

insert into t_admin(username, password, name, sex)

values

(#{entity.username}, #{entity.password}, #{entity.name}, #{entity.sex})

insert into t_admin(username, password, name, sex)

values

(#{entity.username}, #{entity.password}, #{entity.name}, #{entity.sex})

on duplicate key update

username = values(username),

password = values(password),

name = values(name),

sex = values(sex)

update t_admin

username = #{username},

password = #{password},

name = #{name},

sex = #{sex},

where id = #{id}

delete from t_admin where id = #{id}

5、自动生成的dao层

**

  • (TAdmin)表数据库访问层

  • @author 程序员小王

  • @since 2021-12-26 21:07:15

*/

public interface TAdminDao {

/**

  • 通过ID查询单条数据

  • @param id 主键

  • @return 实例对象

*/

TAdmin queryById(Integer id);

/**

  • 统计总行数

  • @param tAdmin 查询条件

  • @return 总行数

*/

long count(TAdmin tAdmin);

/**

  • 新增数据

  • @param tAdmin 实例对象

  • @return 影响行数

*/

int insert(TAdmin tAdmin);

/**

  • 批量新增数据(MyBatis原生foreach方法)

  • @param entities List 实例对象列表

  • @return 影响行数

*/

int insertBatch(@Param(“entities”) List entities);

/**

  • 批量新增或按主键更新数据(MyBatis原生foreach方法)

  • @param entities List 实例对象列表

  • @return 影响行数

  • @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参

*/

int insertOrUpdateBatch(@Param(“entities”) List entities);

/**

  • 修改数据

  • @param tAdmin 实例对象

  • @return 影响行数

*/

int update(TAdmin tAdmin);

/**

  • 通过主键删除数据

  • @param id 主键

  • @return 影响行数

*/

int deleteById(Integer id);

}

6、自动生成的业务层

/**

  • (TAdmin)表服务实现类

  • @author 程序员小王

  • @since 2021-12-26 21:07:18

*/

@Service(“tAdminService”)

public class TAdminServiceImpl implements TAdminService {

@Resource

private TAdminDao tAdminDao;

/**

  • 通过ID查询单条数据

  • @param id 主键

  • @return 实例对象

*/

@Override

public TAdmin queryById(Integer id) {

return this.tAdminDao.queryById(id);

}

/**

  • 新增数据

  • @param tAdmin 实例对象

  • @return 实例对象

*/

@Override

public TAdmin insert(TAdmin tAdmin) {

this.tAdminDao.insert(tAdmin);

return tAdmin;

}

/**

  • 修改数据

  • @param tAdmin 实例对象

  • @return 实例对象

*/

@Override

public TAdmin update(TAdmin tAdmin) {

this.tAdminDao.update(tAdmin);

return this.queryById(tAdmin.getId());

}

/**

  • 通过主键删除数据

  • @param id 主键

  • @return 是否成功

*/

@Override

public boolean deleteById(Integer id) {

return this.tAdminDao.deleteById(id) > 0;

}

}

7、访问数据库

  • 数据库数据

  • 前端访问数据库

三、LomBok插件使用

===============================================================================

1、LomBok解决的问题及缺点

(1)优点

lombok主要解决实体类层的get,set方法,构造器,异常处理;I/O流的关闭操作等等,这些代码没有什么技术含量,又影响着代码的美观,Lombok插件接收解决这些问题的

(2)缺点

但是企业开发中有些公司不使用lomBok,因为只要有一个人使用了lombok,整个项目组都需要使用lombok

2、Lombok的使用

(1)SpringBoot和IDEA官方有推荐使用
  • Idea已经内置了LomBok插件

  • SpringBoot2.1x之后的版本已经内置了LomBok的相关依赖

(2)引入相关的依赖

org.projectlombok

lombok

1.16.18

provided

注意:Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

(3)IDEA对LomBok的支持
  • 点击File-- Settings设置界面,开启 AnnocationProcessors:

开启该项是为了让Lombok注解在编译阶段起到作用

(4)LomBok相关注解的使用
  • 没使用Lombok之前

public class TAdmin implements Serializable {

private static final long serialVersionUID = -81568151678905514L;

private Integer id;

private String username;

private String password;

private String name;

private String sex;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

}

  • 使用Lombok之后

@Setter

@Getter //生成所有成员变量的getter/setter方法;作用于成员变量上

@ToString //覆盖默认的toString()方法

@NoArgsConstructor //生成无参构造器

@AllArgsConstructor //生成全参构造器

public class TAdmin implements Serializable {

private static final long serialVersionUID = -81568151678905514L;

private Integer id;

private String username;

private String password;

private String name;

private String sex;

}

3、Lombok实现原理

javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。

  • javac对源码进行分析,生成一棵抽象语法树(AST

  • javac编译过程中调用实现了JSR 269的Lombok程序

  • 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树 (AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点

  • javac使用修改后的抽象语法树(AST)生成字节码文件

4、Lombok里面的相关注解

(1)@Getter/@Setter:
  • 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。

@Getter

@Setter

public class Emp implements Serializable {

private static final long serialVersionUID = 1L;

private Integer id;

private String name;

private Double salary;

private Integer age;

}

(2)@ToString:
  • 作用于类,覆盖默认的toString()方法,可以通过of属性 限定显示某些字段,通过exclude属性 排除某些字段。

@Getter

@Setter

@ToString(of={“name”,“salary”},exclude = {“age”})

@AllArgsConstructor

public class Emp implements Serializable {

private static final long serialVersionUID = 1L;

private Integer id;

private String name;

private Double salary;

private Integer age;

}

(3)生成构造函数相关的注解

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。

staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。

@NoArgsConstructor:生成无参构造器;

@RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器;

@AllArgsConstructor:生成全参构造器

@Getter

@Setter

@ToString(of={“name”,“salary”},exclude = {“age”})

@AllArgsConstructor //全参构造器

@NoArgsConstructor //无参构造器

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
@NoArgsConstructor //无参构造器

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-URx5iArB-1713342637671)]

[外链图片转存中…(img-LzNk96ft-1713342637671)]

[外链图片转存中…(img-llWTdnlJ-1713342637671)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化

[外链图片转存中…(img-ByYZNBzG-1713342637671)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值