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