
一、EasyCode和Lombok插件的安装 1、在idea中下载EasyCode插件 程序员小王的博客:程序员小王的博客
欢迎点赞 收藏 ⭐留言
如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
java自学的学习路线:java自学的学习路线
Easycode是idea的一个插件,可以直接对数据的表生成 entity(实体类层)、controller(控制层)、service(业务层)、dao(dao层)、mapper(mapper文件) 无需任何编码,简单而强大 。懒人必备呀!
- 安装成功后设置作者名
Lombok能通过注解的方式,在编译时自动为实体类中的属性生成构造器、getter/setter、equals、hashcode、toString方法 。效果是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。
二、EasyCode的使用 1、使用easyCode需要idea链接数据库- 选择mysql数据库
- 设置账户的用户密码和数据库
- 测试链接下载驱动
- 测试成功可以链接
- 链接成功后
- 右击数据库表=》选EasyCode=》选择GenerateCode
- 选择entity(实体类层)、controller(控制层)、service(业务层)、dao(dao层)、mapper(mapper文件)
- 自动生成结构,并且控制层满足restFul风格
@RestController
@RequestMapping("tAdmin")
public class TAdminController {
@Resource
private TAdminService tAdminService;
@GetMapping("{id}")
public ResponseEntity queryById(@PathVariable("id") Integer id) {
return ResponseEntity.ok(this.tAdminService.queryById(id));
}
@PostMapping
public ResponseEntity add(TAdmin tAdmin) {
return ResponseEntity.ok(this.tAdminService.insert(tAdmin));
}
@PutMapping
public ResponseEntity edit(TAdmin tAdmin) {
return ResponseEntity.ok(this.tAdminService.update(tAdmin));
}
@DeleteMapping
public ResponseEntity deleteById(Integer id) {
return ResponseEntity.ok(this.tAdminService.deleteById(id));
}
}
4、自动生成的mapper文件
5、自动生成的dao层
**
* (TAdmin)表数据库访问层
*
* @author 程序员小王
* @since 2021-12-26 21:07:15
*/
public interface TAdminDao {
TAdmin queryById(Integer id);
long count(TAdmin tAdmin);
int insert(TAdmin tAdmin);
int insertBatch(@Param("entities") List entities);
int insertOrUpdateBatch(@Param("entities") List entities);
int update(TAdmin tAdmin);
int deleteById(Integer id);
}
6、自动生成的业务层
@Service("tAdminService")
public class TAdminServiceImpl implements TAdminService {
@Resource
private TAdminDao tAdminDao;
@Override
public TAdmin queryById(Integer id) {
return this.tAdminDao.queryById(id);
}
@Override
public TAdmin insert(TAdmin tAdmin) {
this.tAdminDao.insert(tAdmin);
return tAdmin;
}
@Override
public TAdmin update(TAdmin tAdmin) {
this.tAdminDao.update(tAdmin);
return this.queryById(tAdmin.getId());
}
@Override
public boolean deleteById(Integer id) {
return this.tAdminDao.deleteById(id) > 0;
}
}
7、访问数据库
- 数据库数据
- 前端访问数据库
lombok主要解决实体类层的get,set方法,构造器,异常处理;I/O流的关闭 *** 作等等,这些代码没有什么技术含量,又影响着代码的美观,Lombok插件接收解决这些问题的
(2)缺点但是企业开发中有些公司不使用lomBok,因为只要有一个人使用了lombok,整个项目组都需要使用lombok
2、Lombok的使用 (1)SpringBoot和IDEA官方有推荐使用- Idea已经内置了LomBok插件
- SpringBoot2.1x之后的版本已经内置了LomBok的相关依赖
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)生成字节码文件
- 作用类上,生成所有成员变量的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 //无参构造器
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Double salary;
private Integer age;
}
(4)@EqualsAndHashCode
- 作用于类,覆盖默认的equals和hashCode
- 主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
@Getter
@Setter
@ToString(of={"name","salary"},exclude = {"age"})
@AllArgsConstructor //全参构造器
@NoArgsConstructor //无参构造器
@EqualsAndHashCode //作用于类,覆盖默认的equals和hashCode
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
@NonNull private String name;
private Double salary;
private Integer age;
}
(6)@Data
- 作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
//@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor集合
@Data
@AllArgsConstructor //一定注意不包含全构造器
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Double salary;
private Integer age;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)