成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Boot學(xué)習(xí)筆記(二)簡(jiǎn)單CRUD實(shí)現(xiàn)

legendaryedu / 1319人閱讀

摘要:用于管理數(shù)據(jù)實(shí)體及持久化相關(guān)的處理,則是整個(gè)業(yè)務(wù)的核心。首先,對(duì)于的每個(gè)接口,我們?cè)谥卸x對(duì)應(yīng)請(qǐng)求接收方法說明注解,表明這個(gè)專門用于服務(wù),返回值不是傳統(tǒng)的數(shù)據(jù)。對(duì)于來講,僅僅是一個(gè)簡(jiǎn)單的繼承了的接口。

開發(fā)配置

依賴包準(zhǔn)備

這里選用mysql作為數(shù)據(jù)庫(kù),需要用到的包有三個(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ù)庫(kù)連接設(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ù)庫(kù)名稱,username和password可自行設(shè)置和修改

實(shí)體定義

我們將要操作的實(shí)體很簡(jiǎn)單,只有一個(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ù)。

備忘
在測(cè)試中,此處的id類型使用Integer會(huì)報(bào)錯(cuò),原因尚不清楚,使用int則無問題。

路由設(shè)置

以簡(jiǎn)單的User對(duì)象為例,我們來實(shí)現(xiàn)一個(gè)簡(jiǎn)(chou)單(lou)的的CRUD處理

Restful風(fēng)格

對(duì)于簡(jiǎn)單的增刪改查功能,一般的restful接口定義如下:

GET    /user        # 取得user列表
POST   /user        # 提交user
PUT    /user        # 更新user
PATCH  /user        # 更新user(個(gè)別屬性)
DELETE /user/:id    # 刪除user

路由設(shè)置

對(duì)于純數(shù)據(jù)的Java后端架構(gòu)來講,MVC中少了View,但M和C仍是必不可少的。Model用于管理數(shù)據(jù)實(shí)體及持久化相關(guān)的處理,Controller則是整個(gè)業(yè)務(wù)的核心。

首先,對(duì)于user的每個(gè)接口,我們?cè)赾ontroller中定義對(duì)應(yīng)請(qǐng)求接收方法:

@RestController
@RequestMapping("/user")
public class UserController {
    
    @Autowired
    private UserService userService;

    @GetMapping("")
    public ResponseEntity getList() {
        return new ResponseEntity(userService.getUserList(), HttpStatus.OK);
    }
    
    @PostMapping("")
    public ResponseEntity create(@RequestBody User user) {
        return new ResponseEntity(userService.save(user), HttpStatus.CREATED);
    }

    @PatchMapping("")
    public ResponseEntity update(@RequestBody User user) {
        return new ResponseEntity(userService.save(user), HttpStatus.ACCEPTED);
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity remove(@PathVariable("id") int id) {
        userService.remove(id);
        return new ResponseEntity(HttpStatus.ACCEPTED);
    }
}

<說明>

@RestController注解,表明這個(gè)controller專門用于Restful服務(wù),返回值不是傳統(tǒng)的WEB數(shù)據(jù)。

@RequestMapping注解,表明訪問的相對(duì)路徑為“/user"

@GetMapping、@PostMapping、@PatchMapping和@DeleteMapping分別對(duì)應(yīng)了GET、POST、PATCH和DELETE請(qǐng)求,這四個(gè)方法將分別接收對(duì)應(yīng)訪問路徑上對(duì)應(yīng)方法的HTTP請(qǐng)求。它們也可用@RequestMapping(value="", method=RequestMethod.POST(或者GET、PATCH等)來替代。

@PathVariable用于取得訪問路徑中的參數(shù)

ResponseEntity用于返回處理結(jié)果與錯(cuò)誤碼

上面通過UserService的調(diào)用,實(shí)現(xiàn)了user的CRUD操作。Spring通過@Autowired注解,會(huì)自動(dòng)創(chuàng)建UserService的實(shí)例。

CRUD操作

通過UserService的相關(guān)操作,我們可以很容易的對(duì)user表進(jìn)行CRUD操作。代碼如下:

@Service
public class UserService {

    @Autowired
    private UserRepository userRepo;
    
    public Iterable getUserList() {
        return userRepo.findAll();
    }
    
    public User save(User user) {
        return userRepo.save(user);
    }
    
    public void remove(int id) {
        userRepo.delete(id);
    }
}

<說明>

通過@Service注解,Spring會(huì)自動(dòng)實(shí)例化到UserController中

Service中注解了@Autowired的實(shí)例userRepo,實(shí)際上是繼承了CrudRepository的一個(gè)接口。Repository在Spring的概念體系中是類似于傳統(tǒng)DAO的實(shí)體,一個(gè)Repository對(duì)應(yīng)一個(gè)數(shù)據(jù)表的操作。

UserService中使用的findAll、save和delete方法,均是CrudRepository中預(yù)定義的方法。

對(duì)于UserRepository來講,僅僅是一個(gè)簡(jiǎn)單的繼承了CrudRepository的接口。代碼如下:

public interface UserRepository extends CrudRepository {}

關(guān)于Repository的說明,可以看這篇文章pring Boot學(xué)習(xí)筆記(三)Repository的使用

結(jié)果確認(rèn)

簡(jiǎn)單接口測(cè)試可使用POSTMAN進(jìn)行,結(jié)果如下:

取得用戶列表

插入2條數(shù)據(jù)

取得用戶列表

更新用戶

刪除用戶

取得用戶列表

待改進(jìn)事項(xiàng)

目前只是實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的CRUD操作,就這個(gè)簡(jiǎn)單流程來講,以下幾點(diǎn)尚欠缺:

返回值需要有結(jié)構(gòu)化的設(shè)計(jì)

分頁(yè)和排序功能也有欠缺。

缺少自動(dòng)化測(cè)試

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70752.html

相關(guān)文章

  • Spring Boot學(xué)習(xí)筆記(六)結(jié)合MyBatis實(shí)現(xiàn)較為復(fù)雜的RESTful API

    摘要:前兩篇已經(jīng)構(gòu)建了標(biāo)準(zhǔn)工程實(shí)例,也整合了實(shí)現(xiàn)了簡(jiǎn)單數(shù)據(jù)庫(kù)訪問,本篇主要更深入的學(xué)習(xí)下,實(shí)現(xiàn)較為完整的數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)服務(wù)。到這里,最復(fù)雜的數(shù)據(jù)訪問基本就算編寫完了。 前兩篇已經(jīng)構(gòu)建了RESTful API標(biāo)準(zhǔn)工程實(shí)例,也整合了MyBatis實(shí)現(xiàn)了簡(jiǎn)單數(shù)據(jù)庫(kù)訪問,本篇主要更深入的學(xué)習(xí)下,實(shí)現(xiàn)較為完整的數(shù)據(jù)庫(kù)CRUD的標(biāo)準(zhǔn)服務(wù)。 首先看下要實(shí)現(xiàn)的效果吧,完成下面截圖部分的API,除了CRUD之外...

    CntChen 評(píng)論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強(qiáng))

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評(píng)論0 收藏0
  • Spring Boot學(xué)習(xí)筆記(七)通用mapper,代碼生成,分頁(yè)組件接入

    摘要:代碼自動(dòng)生成底層服務(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)一套簡(jiǎn)單的Restful API用于業(yè)務(wù)支撐。 于是在GitHub上找到了一個(gè)不錯(cuò)的demo,直接看demo搭建自己的...

    neroneroffy 評(píng)論0 收藏0
  • Spring Boot 2.x 系列教程:WebFlux 系列教程大綱(一)

    摘要:使用則需要及以上版本。開發(fā)使用框架七系列教程目錄系列教程大綱快速入門實(shí)踐實(shí)踐整合整合中和實(shí)踐整合中實(shí)現(xiàn)緩存中實(shí)現(xiàn)通信集成測(cè)試及部署實(shí)戰(zhàn)圖書管理系統(tǒng) WebFlux 系列教程大綱 一、背景 大家都知道,Spring Framework 是 Java/Spring 應(yīng)用程序跨平臺(tái)開發(fā)框架,也是 Java EE(Java Enterprise Edition) 輕量級(jí)框架,其 Spring ...

    jone5679 評(píng)論0 收藏0
  • Spring Boot 2 快速教程:WebFlux 快速入門(

    摘要:響應(yīng)式編程是基于異步和事件驅(qū)動(dòng)的非阻塞程序,只是垂直通過在內(nèi)啟動(dòng)少量線程擴(kuò)展,而不是水平通過集群擴(kuò)展。三特性常用的生產(chǎn)的特性如下響應(yīng)式編程模型適用性內(nèi)嵌容器組件還有對(duì)日志消息測(cè)試及擴(kuò)展等支持。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號(hào):泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! 02:WebFlux 快速入門實(shí)踐 文章工程: JDK...

    gaara 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<