<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                我們假設前臺與后臺定完規范后就開始獨立開發,那么此時我們需要考慮的僅僅是下述接口信息: ``` PUT /Teacher/{id} ``` | Type | Name | Description | Schema | | ---- | ---- | ---- | ---- | | Path | id | 更新的教師ID | Long | | Body | teacher | 更新教師數據 | Teacher | # 定義請求路徑、接收請求主體 TeacherController ``` @PutMapping("{id}") ? @CrossOrigin("*") public void update(@PathVariable Long id, @RequestBody Teacher newTeacher) { System.out.println(id); ? System.out.println(newTeacher.toString()); ? } ``` * ? 接收PUT請求。 * ? 使用系統內置的方法打印數據到控制臺。 ## `HTTP Request`測試 我們可以打開`REST Client`,然后點擊`Convert request to new format`生成一個新的`HTTP Request`,也可以在`IDEA`中使用快捷鍵`??N(macos)`或`Ctrl+Shift+Alt+Insert (windows)`來新建一個`HTTP Request`。并在該請求文件中輸入以下信息: > linux版本的快捷鍵請查閱[https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html?keymap=primary\_default\_for\_windows#create-an-http-request-scratch-file](https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html?keymap=primary_default_for_windows#create-an-http-request-scratch-file) ``` PUT http://localhost:8080/Teacher/1 ? Content-Type: application/json ? ? { ? "name": "張三更新", "username": "newzhangsan", "sex": false, "email": "newzhangsan@yunzhiclub.com" } ``` * ? 聲明請求的地址及方法 * ? 告訴后臺我發送主體數據的類型為`json`(json只是后臺接收數據的一種,我們在向后臺發送主體數據時必須告訴后臺數據的類型。這是由于數據傳輸的本質是二進制,后臺是沒有辦法通過二進制數據來區域我們傳入的數據類型的) * ? 此處空一行,來表示:此行以下的內容為主體內容。 * ? 發送給后臺的`json`字符串,該字符串必須使用嚴格的`json`格式。 點擊綠色的啟動按鈕,發起數據請求: ![](https://img.kancloud.cn/60/44/6044bae0ab7b7c3277e9ce88a36dc9a2_757x367.png) 由于我們在后臺返回的數據為void,即未返回任何數據,所以返回的結果的響應數據為空,結果如下: ``` PUT http://localhost:8080/Teacher/1 ? ? HTTP/1.1 200 ? Content-Length: 0 ? Date: Fri, 25 Oct 2019 01:00:06 GMT ? ? <Response body is empty> ? Response code: 200; Time: 50ms; Content length: 0 bytes ? ``` * ? 請求地址 * ? 使用的協議為HTTP/1.1,返回的狀態碼為:200 (200代碼請求正常)。 * ? 返回的內容長度為0 * ? 處理時間 (GMT時間,在該值上加8即北京時間) * ? 空行,分隔返回的信息。 * ? 告知用戶返回主體的確是沒有內容。如果不標記,那么后臺如果返回10個空格符(換行符等)給我們,我們也會認為為空。 * ? 總結:響應狀態200;花費時間50ms;內容長度:0字節。 > GMT格林時間:我國為東8時區,也稱為GMT+8。大體原因是這樣:地球24小時自轉一圈,經度不同的地區看到太陽升起的時間是不一樣的。由于地球自轉的方向是自西向東(這就是為什么太陽從東邊升起的原因),所以相隔的地區永遠都是位于東側的先看到日出。相隔的越遠看到日出的時差就越大,所以我們也是可以使用看到日出的時間差來描述兩地間的距離的。格林呢在我們西邊,看到日出的時候比我們晚8個小時,所以如果以北京時間為標準時間的話,那么格林時間就是BJ-8。而相反的,以格林為標準時間的話,我們就是GMT+8。其實只所以以格林為標準時間,是由于我們將其所在的經度標記為0度,格林以東就是東經,格林以西就是西經。而東經180度與西經180度都是地球的半個圈,所以東經180度就等于西經180度。而地球轉360度需要24個小時,那么轉180就需要12個小時。這么推算,轉**120**度就是需要8個小時。然后我們的時候是GMT+8,說明比格林早看到日期,那么就必然位于格式**東**邊。所以北京的經度應該是**東經120度**。 此時,我們再切換至程序控制臺: ![](https://img.kancloud.cn/1a/ef/1aef81a4db4c47372f54dbf0c9e6b586_706x238.png) 查看控制臺信息: ![](https://img.kancloud.cn/31/79/317931c034a863cdccf61847fda58254_878x141.png) # JDBCTemplate.update 前面的章節中我們使用了`JDBCTemplate.execute()`來完成了數據的插入操作,`JDBCTemplate.execute()`實質上是執行了一條不需要返回值的`sql`語句。原則上當前也是可以完成數據的更新操作的。官方文檔如是說: > You can use the`execute(..)`method to run any arbitrary SQL. Consequently, the method is often used for DDL statements. It is heavily overloaded with variants that take callback interfaces, binding variable arrays, and so on. 也就是說在進行一般的數據操作時,官方文檔并不推薦我們直接`JDBCTemplate.execute()`。官方文檔還說: > You can use the`update(..)`method to perform insert, update, and delete operations. Parameter values are usually provided as variable arguments or, alternatively, as an object array. 也就是說在執行數據的`插入` 、`更新`、`刪除`操作時,我們應該使用`update()`方法。 ``` /** * 使用傳入的數據更新某個教師的數據 * * @param id 教師ID * @param newTeacher 更新教師 */ @PutMapping("{id}") @CrossOrigin("*") public void update(@PathVariable Long id, @RequestBody Teacher newTeacher) { String sql = String.format( "update `teacher` set `name` = '%s' , `username` = '%s' , `email` = '%s' , `sex` = %s where `id` = %s", newTeacher.getName(), newTeacher.getUsername(), newTeacher.getEmail(), newTeacher.getSex().toString(), id ); this.jdbcTemplate.update(sql); ? } ``` * ? 使用update方法來完成數據的更新操作。 ## 測試 重新啟動項目,重新運行`HTTP Request`測試后,我們打開數據查看`id`為1的教師數據: ![](https://img.kancloud.cn/af/45/af4541204fbeab754b9e60833a384a54_681x59.png) # 對接測試 ![](https://img.kancloud.cn/ab/9c/ab9c7c53f221513bc4ac693a51ec22b3_666x483.gif) ## BUG修復 有個小BUG就是男女不太統一,修改為男性,查看的時候是女性;修改為女性,查看的時候卻是男姓。這是由于查看與修改的規范不同造成的。我們規定:0(false)男性,1(true)為女性。 依此:對應修改兩個V層文件: teacher-add.component.html、teacher-edit.component.html ```html <label> <input type="radio" name="sex" [value]="false" [(ngModel)]="sex"> 男</label> <label> <input type="radio" name="sex" [value]="true" [(ngModel)]="sex"> 女</label> ``` # 參考文檔 | 名稱 | 鏈接 | 預計學習時長(分) | | --- | --- | --- | | mysql update語法介紹 | [https://www.runoob.com/mysql/mysql-update-query.html](https://www.runoob.com/mysql/mysql-update-query.html) | 10 | | 格林尼治標準時間 |[https://zh.wikipedia.org/wiki/%E6%A0%BC%E6%9E%97%E5%B0%BC%E6%B2%BB%E6%A8%99%E6%BA%96%E6%99%82%E9%96%93](https://zh.wikipedia.org/wiki/%E6%A0%BC%E6%9E%97%E5%B0%BC%E6%B2%BB%E6%A8%99%E6%BA%96%E6%99%82%E9%96%93) | 2 | | http狀態碼 | [https://www.runoob.com/http/http-status-codes.html](https://www.runoob.com/http/http-status-codes.html) | 5 | | JdbcTemplate update | [https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/data-access.html#jdbc-JdbcTemplate-examples-update](https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/data-access.html#jdbc-JdbcTemplate-examples-update) | 5 | | 源碼地址 | [https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step2.4.5](https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step2.4.5) | - |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看