在上一章節中《技術選型和整合開發環境》,肯定了開發的技術,可是若是直接這樣用的話,可能開發效率會不高,爲了提升開發的效率,這裏再整合lombok和mybatis-plus兩個組件。java
之前在Github上看到過lombok,可是也沒有進一步瞭解它的做用。前幾天用了一下,感受代碼清爽多了,確時以爲利用lombok能夠簡化代碼提升開發效率的。spring
lombok的官網爲https://projectlombok.org/,官網上對它介紹以下:數據庫
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
大概意思就是:微信
Lombok是一種Java™實用工具,可用來幫助開發人員消除Java的冗長代碼,尤爲是對於簡單的Java對象(POJO),它經過註釋實現這一目的。
要使用lombok這個工具,首先要爲開發工具安裝相應插件,以eclipse爲例:mybatis
(1)、到官網下載lombok.jarapp
(2)、雙擊lombok.jar文件,出現以下畫面:框架
點擊「Specify location...」按鈕,找到eclipse的運行文件eclipse.exedom
(3)、安裝完成,重啓eclipse便可。eclipse
(4)、若是是maven管理工程,只須要在pom文件加入:maven
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
注意:因爲本人這邊是基於spring boot的,因此lombok沒有加版本號,若是你這邊不是基於spring boot就要加上相應的版本號。
lombok提供註解有:
固然還有一些註解,此處就不在介紹,你們能夠自行查看官網信息。
舉例說明:
好比:寫一個Config的domain對象,從上一節章節可知,該對象有3個屬性分別是configId、configValue和description,若是是按着原來的寫法是:
package com.swnote.common.domain; import java.io.Serializable; /** * 站點相關配置信息 * * @author lzj * @since 1.0 * @date [2019-04-04] */ public class Config implements Serializable { private static final long serialVersionUID = 8241975875344125491L; /** * 配置項key */ private String configId; /** * 配置項value */ private String configValue; /** * 描述 */ private String description; public String getConfigId() { return configId; } public void setConfigId(String configId) { this.configId = configId; } public String getConfigValue() { return configValue; } public void setConfigValue(String configValue) { this.configValue = configValue; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
可是若是使用lombok後,就變成以下:
package com.swnote.common.domain; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; /** * 站點相關配置信息 * * @author lzj * @since 1.0 * @date [2019-04-04] */ @Data @NoArgsConstructor public class Config implements Serializable { private static final long serialVersionUID = 8241975875344125491L; /** * 配置項key */ private String configId; /** * 配置項value */ private String configValue; /** * 描述 */ private String description; }
代碼明顯變得更加簡潔了,只加了@Data和@NoArgsConstructor兩個註解,就達到跟上面同樣的效果,省去Getter和Getter代碼,可是這個一樣有Getter和Getter方法,這就是lombok插件幫咱們加上相應的代碼。
若是直接使用mybatis做爲持久化層框架的話,那麼對每條SQL都得寫在相應的mapper文件裏面,這也很麻煩的。然而mybatis-plus是在MyBatis的基礎上只作加強不作改變,爲簡化開發、提升效率而生。官網在是https://mp.baomidou.com,它的特性有:
整合mybatis-plus:
(1)、pom文件中加入相應依賴:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency>
(2)、在配置文件application.yml加上:
mybatis-plus: mapper-locations: classpath:com/swnote/*/dao/*.xml type-aliases-package: com.swnote.auth.domain,com.swnote.blog.domain,com.swnote.common.domain
(3)、domain類上加上相應的註解:
/** * 站點相關配置信息 * * @author lzj * @since 1.0 * @date [2019-04-04] */ @Data @NoArgsConstructor @TableName("comm_config") public class Config implements Serializable { private static final long serialVersionUID = 2408416388054324323L; /** * 配置項key */ @TableId(value = "configId", type = IdType.INPUT) private String configId; /** * 配置項value */ @TableField("configValue") private String configValue; /** * 描述 */ @TableField("description") private String description; }
其中@TableName、@TableId和@TableField都是mybatis-plus中定義的註解。
(4)、dao層代碼:
/** * 站點相關配置信息Dao * * @author lzj * @since 1.0 * @date [2019-04-04] */ @Repository public interface ConfigDao extends BaseMapper<Config> { }
(5)、service層代碼:
/** * 站點相關配置信息服務接口 * * @author lzj * @since 1.0 * @date [2019-04-04] */ public interface IConfigService extends IService<Config> { }
/** * 站點相關配置信息服務類 * * @author lzj * @since 1.0 * @date [2019-04-04] */ @Service public class ConfigService extends ServiceImpl<ConfigDao, Config> implements IConfigService { }
經過上面dao層和service層代碼能夠發現,對於增刪改查的操做都不須要寫任何代碼。
(6)、測試
@RunWith(SpringRunner.class) @SpringBootTest public class ConfigServiceTest { @Autowired private IConfigService configService; @Test public void save() throws Exception { Config config = new Config(); config.setConfigId("test"); config.setConfigValue("testValue"); config.setDescription("測試內容"); configService.save(config); } @Test public void update() { Config config = new Config(); config.setConfigId("test"); config.setConfigValue("testValue---g"); config.setDescription("測試內容---g"); configService.updateById(config); } @Test public void get() { Config config = configService.getById("test"); System.out.println(config); } @After public void delete() { configService.removeById("test"); } }
經測試是沒有問題的,整合mybatis-plus能夠明顯提升開發效率。
以你最方便的方式關注我:
微信公衆號: