摘要:用于管理數(shù)據(jù)實體及持久化相關(guān)的處理,則是整個業(yè)務(wù)的核心。首先,對于的每個接口,我們在中定義對應(yīng)請求接收方法說明注解,表明這個專門用于服務(wù),返回值不是傳統(tǒng)的數(shù)據(jù)。對于來講,僅僅是一個簡單的繼承了的接口。
開發(fā)配置
依賴包準(zhǔn)備
這里選用mysql作為數(shù)據(jù)庫,需要用到的包有三個,需要將相關(guān)依賴寫入pom.xml,如下:
org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java org.springframework.boot spring-boot-starter-data-jpa
數(shù)據(jù)庫連接設(shè)定
在src/main/resources/application.properties文件中,加入以下配置信息:
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=test spring.datasource.password=test spring.datasource.tomcat.max-idle=10 spring.datasource.tomcat.max-wait=10000 spring.datasource.tomcat.min-idle=5 spring.datasource.tomcat.initial-size=5
其中test是數(shù)據(jù)庫名稱,username和password可自行設(shè)置和修改
實體定義我們將要操作的實體很簡單,只有一個id屬性和一個name屬性。定義如下:
@Entity @Table(name="T_USER") public class User { /** * 用戶ID */ @Id @GeneratedValue private int id; /** * 用戶名 */ private String name; // GETTER和SETTER此處省略... }
<說明>
@Entity注解,表明了這是一個Entity,可以使用默認(rèn)的ORM規(guī)則,即class名即為要更新的數(shù)據(jù)表名
@Table注解,可以指定這個Entity要更新的數(shù)據(jù)表名,也不使用默認(rèn)的ORM規(guī)則。
@Id注解,表明了這個數(shù)據(jù)表的主鍵ID,這個主鍵可以是AUTO_INCREMENT類型的數(shù)據(jù)。
備忘
在測試中,此處的id類型使用Integer會報錯,原因尚不清楚,使用int則無問題。
以簡單的User對象為例,我們來實現(xiàn)一個簡(chou)單(lou)的的CRUD處理
Restful風(fēng)格
對于簡單的增刪改查功能,一般的restful接口定義如下:
GET /user # 取得user列表 POST /user # 提交user PUT /user # 更新user PATCH /user # 更新user(個別屬性) DELETE /user/:id # 刪除user
路由設(shè)置
對于純數(shù)據(jù)的Java后端架構(gòu)來講,MVC中少了View,但M和C仍是必不可少的。Model用于管理數(shù)據(jù)實體及持久化相關(guān)的處理,Controller則是整個業(yè)務(wù)的核心。
首先,對于user的每個接口,我們在controller中定義對應(yīng)請求接收方法:
@RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("") public ResponseEntity> getList() { return new ResponseEntity
<說明>
@RestController注解,表明這個controller專門用于Restful服務(wù),返回值不是傳統(tǒng)的WEB數(shù)據(jù)。
@RequestMapping注解,表明訪問的相對路徑為“/user"
@GetMapping、@PostMapping、@PatchMapping和@DeleteMapping分別對應(yīng)了GET、POST、PATCH和DELETE請求,這四個方法將分別接收對應(yīng)訪問路徑上對應(yīng)方法的HTTP請求。它們也可用@RequestMapping(value="", method=RequestMethod.POST(或者GET、PATCH等)來替代。
@PathVariable用于取得訪問路徑中的參數(shù)
ResponseEntity用于返回處理結(jié)果與錯誤碼
上面通過UserService的調(diào)用,實現(xiàn)了user的CRUD操作。Spring通過@Autowired注解,會自動創(chuàng)建UserService的實例。
CRUD操作通過UserService的相關(guān)操作,我們可以很容易的對user表進行CRUD操作。代碼如下:
@Service public class UserService { @Autowired private UserRepository userRepo; public IterablegetUserList() { return userRepo.findAll(); } public User save(User user) { return userRepo.save(user); } public void remove(int id) { userRepo.delete(id); } }
<說明>
通過@Service注解,Spring會自動實例化到UserController中
Service中注解了@Autowired的實例userRepo,實際上是繼承了CrudRepository的一個接口。Repository在Spring的概念體系中是類似于傳統(tǒng)DAO的實體,一個Repository對應(yīng)一個數(shù)據(jù)表的操作。
UserService中使用的findAll、save和delete方法,均是CrudRepository中預(yù)定義的方法。
對于UserRepository來講,僅僅是一個簡單的繼承了CrudRepository的接口。代碼如下:
public interface UserRepository extends CrudRepository{}
關(guān)于Repository的說明,可以看這篇文章pring Boot學(xué)習(xí)筆記(三)Repository的使用
結(jié)果確認(rèn)簡單接口測試可使用POSTMAN進行,結(jié)果如下:
取得用戶列表
插入2條數(shù)據(jù)
取得用戶列表
更新用戶
刪除用戶
取得用戶列表
目前只是實現(xiàn)了一個簡單的CRUD操作,就這個簡單流程來講,以下幾點尚欠缺:
返回值需要有結(jié)構(gòu)化的設(shè)計
分頁和排序功能也有欠缺。
缺少自動化測試
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70752.html
摘要:前兩篇已經(jīng)構(gòu)建了標(biāo)準(zhǔn)工程實例,也整合了實現(xiàn)了簡單數(shù)據(jù)庫訪問,本篇主要更深入的學(xué)習(xí)下,實現(xiàn)較為完整的數(shù)據(jù)庫的標(biāo)準(zhǔn)服務(wù)。到這里,最復(fù)雜的數(shù)據(jù)訪問基本就算編寫完了。 前兩篇已經(jīng)構(gòu)建了RESTful API標(biāo)準(zhǔn)工程實例,也整合了MyBatis實現(xiàn)了簡單數(shù)據(jù)庫訪問,本篇主要更深入的學(xué)習(xí)下,實現(xiàn)較為完整的數(shù)據(jù)庫CRUD的標(biāo)準(zhǔn)服務(wù)。 首先看下要實現(xiàn)的效果吧,完成下面截圖部分的API,除了CRUD之外...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:代碼自動生成底層服務(wù)有很多通用的,利用代碼生成最好不過了,這里作者將代碼生成放在中的,避免與正式代碼沖突。主要通過來實現(xiàn),項目中的模板文件可以自行定義。相互學(xué)習(xí),共同進步 從零開始學(xué)習(xí)Spring Boot也有幾天時間了,項目已經(jīng)不允許我這么慢慢學(xué)習(xí)了,急需底層變現(xiàn)實現(xiàn)一套簡單的Restful API用于業(yè)務(wù)支撐。 于是在GitHub上找到了一個不錯的demo,直接看demo搭建自己的...
摘要:使用則需要及以上版本。開發(fā)使用框架七系列教程目錄系列教程大綱快速入門實踐實踐整合整合中和實踐整合中實現(xiàn)緩存中實現(xiàn)通信集成測試及部署實戰(zhàn)圖書管理系統(tǒng) WebFlux 系列教程大綱 一、背景 大家都知道,Spring Framework 是 Java/Spring 應(yīng)用程序跨平臺開發(fā)框架,也是 Java EE(Java Enterprise Edition) 輕量級框架,其 Spring ...
摘要:響應(yīng)式編程是基于異步和事件驅(qū)動的非阻塞程序,只是垂直通過在內(nèi)啟動少量線程擴展,而不是水平通過集群擴展。三特性常用的生產(chǎn)的特性如下響應(yīng)式編程模型適用性內(nèi)嵌容器組件還有對日志消息測試及擴展等支持。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! 02:WebFlux 快速入門實踐 文章工程: JDK...
閱讀 4474·2021-11-22 09:34
閱讀 2759·2021-11-12 10:36
閱讀 802·2021-08-18 10:23
閱讀 2693·2019-08-30 15:55
閱讀 3225·2019-08-30 15:53
閱讀 2137·2019-08-30 15:44
閱讀 1409·2019-08-29 15:37
閱讀 1521·2019-08-29 13:04