码农的烦恼 在实现了第一个"/api/keyword"的接口之后,我们可以继续编写其余接口了。这一次,我们想尝试挑战一下TestLink中最大的业务对象 TestProject。 但是看过TestProject表的建表语句后,码农就有了烦恼。 建表语句是这样的,
CREATE TABLE /prefix/testprojects ( id int(10) unsigned NOT NULL, notes text, color varchar(12) NOT NULL default ‘#9BD’, active tinyint(1) NOT NULL default ‘1’, option_reqs tinyint(1) NOT NULL default ‘0’, option_priority tinyint(1) NOT NULL default ‘0’, option_automation tinyint(1) NOT NULL default ‘0’, options text, prefix varchar(16) NOT NULL, tc_counter int(10) unsigned NOT NULL default ‘0’, is_public tinyint(1) NOT NULL default ‘1’, issue_tracker_enabled tinyint(1) NOT NULL default ‘0’, code_tracker_enabled tinyint(1) NOT NULL default ‘0’, reqmgr_integration_enabled tinyint(1) NOT NULL default ‘0’, api_key varchar(64) NOT NULL default ‘0d8ab81dfa2c77e8235bc829a2ded3edfa2c78235bc829a27eded3ed0d8ab81d’, PRIMARY KEY (id), KEY /prefix/testprojects_id_active (id,active), UNIQUE KEY /prefix/testprojects_prefix (prefix), UNIQUE KEY /prefix/testprojects_api_key (api_key) ) DEFAULT CHARSET=utf8; 相比于关键字Keywords表的4-5个字段来说,TestProject表是数量级上的增加了。考虑到我们后面的工作,从定义domain业务对象开始,写mapper.xml,然后是DAO层操作,接着是Service接口和实现,最后组装成Controller对外提供服务(按业务需求开发一般是一个与之逆向的过程)。每一个接口这样的编写过程其实是非常繁琐、重复的体力劳动,也难怪软件开发人员经常自嘲是“搬砖”的“码农”了。 那如何来让自己的搬砖工作轻松一点呢? 还是得借助于专业的搬砖工具。 鉴于我们项目的实际(已有数据库schema,后台换开发语言重构),这里将介绍如何引入Lombok和Mybatis-Generator(MBG)。
Lombok 首先我们针对domain对象来引入一个代码辅助生成工具Lombok。在早期的Java开发中,IDE也默认提供了代码自动生成功能,如以下是Eclipse中提供的,包括了Get/Set,构造方法等等。
image.png 但是Lombok提供了基于注解的更为灵活和简洁友好的实现方式。譬如,以下是采用了Lombok之后的TestProject类
package com.testlink4j.domain;
import java.io.Serializable;
import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;
@Data @Builder @AllArgsConstructor @NoArgsConstructor public class Testprojects implements Serializable { private Integer id; private String color; private Boolean active; private Boolean option_reqs; private Boolean option_priority; private Boolean option_automation; private String prefix; private Integer tc_counter; private Boolean is_public; private Boolean issue_tracker_enabled; private Boolean reqmgr_integration_enabled; private String api_key; private String notes; private String options; private static final long serialVersionUID = 1L; } } 相比于IDE中直接生成并插入代码的方式,这种基于注解的方式无疑是非常简洁的。对于阅读代码的人来讲,少了大量没有业务逻辑的get/set代码,阅读负担也减轻了许多。 我们注意到,这个类中一共使用了4个Lombok提供的注解,主意解释如下:
@Data 使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,在编译时该工具会自动加进去。 @AllArgsConstructor 使用后添加一个构造方法,该构造方法含有所有已声明字段属性参数 @NoArgsConstructor 使用后创建一个无参构造方法 @Builder Builder背后是“建造模式”这样一个设计模式,其主要作用是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦。使用者可以自行根据使用需求,自行组装,如下例: public static void main(String[] args) { //使用@Builder注解后,可以直接通过Builder设置字段参数 Testprojects tp1=new Testprojects.testprojectsBuilder() .id(123) .active(Boolean.TRUE) .prefix(“test”) .build(); } 如何引入Lombok - pom.xml 在该项目的pom.xml中添加如下依赖即可:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> <scope>provided</scope> </dependency>如何引入Lombok - IDE 在Maven项目的依赖中引入该版本
Mybatis-Generator(MBG) ———————————————— 作者:antony已经被占用 链接:https://www.jianshu.com/p/f24292fbd4bc 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。