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