idal 創建springboot 項目_手把手的SpringBoot教程,SpringBoot創建web項目(四)

在實際的開發過程中,我們需要前端頁面向Java端提交請求,這些請求一般分為get方式和post方式,不管是哪一種方式,一般都會攜帶一些參數。這一節,我們來演示一下如何給Controller傳遞參數。

代碼:

@RestController

@RequestMapping("hello")

public class HelloController {


public String hello(){

return "Hello Spring Boot";

}



@RequestMapping("login")

public String login(@RequestParam("username") String username){

return "用戶名:" + username;

}

}
這邊我們用到了@RequestParam注解。

然后,啟動項目,在地址欄訪問:http://localhost:8088/demo/login?username=jack

即可看到效果:

106a55ca54bb9cc022f07ebdb62f833c.png

如果我們參數后面什么都不寫:

http://localhost:8088/demo/login?username=

那么返回就是空:

291a01a53fc9a068cbdbd58314ffff85.png

我們可以設置參數的默認值:

@RequestMapping("login")

public String login(@RequestParam(value="username",defaultValue="未知用戶") String username){

return "用戶名:" + username;

}

再次訪問:http://localhost:8088/demo/login?username=

得:

a46b88b3dbe1f126ff863f783c8732fd.png

接下來,我們來演示如何在SpringBoot項目中連接數據庫,并且自動創建一張表。

按照慣例,數據庫我們依然使用mysql,至于什么是jpa呢?

jpa是sun推出的持久化規范(java persistens api),JPA通過JDK 5.0注解或XML描述對象-關系表的映射關系,并將運行期的實體對象持久化到數據庫中。JPA 的目標之一是制定一個可以由很多供應商實現的API,并且開發人員可以編碼來實現該API,而不是使用私有供應商特有的API。

實現JPA規范的框架,比較出名的是hibernate。

現在,我們需要在pom文件中引入兩個依賴:

<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-jpaartifactId>
dependency>

<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>

分別為spring-data-jpq和mysql驅動。

Spring Data是一個用于簡化數據庫訪問,并支持云服務的開源框架。其主要目標是使得對數據的訪問變得方便快捷,并支持map-reduce框架和云計算數據服務。Spring Data 包含多個子項目,spring-data-jpq就是其中的一個。

修改yml文件:

server:
port: 8088
context-path: /demo
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/crud
username: root
password: 123456
jpa:
hibernate:
ddl-auto: create
show-sql: true

其中,設置ddl-auto: create的目的就是在項目啟動的時候,就創建表。

接著,我們去新建一個JavaBean:

ec3503d1a21a64218f187dc4aac30ee7.png

代碼:

package com.springboot.study.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User {

@Id
@GeneratedValue
private Integer id;

private String username;
private String password;

//無參構造方法,這個必須要有,不然會報錯
public User() {

}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}




}

其中,主鍵ID設置為自增長。

然后,啟動項目,發現數據庫的表已經自動生成了。

e87fa53d21197cf1b2a2a668ac1cdcaf.png

e1a5c4305347860c150088122b6c445e.png

在上一節的yml文件中,我們設置 ddl-auto 為 create,這會導致每一次啟動項目的時候,都會去數據庫里面重新創建表。這不是我們希望看到的,一般在項目開發中,我們更愿意把這個配置設置為update,這樣的話,啟動項目時它會去檢測,如果表已經存在并且里面是有數據的,即不會去重新建表了。

server:
port: 8088
context-path: /demo
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/crud
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true

我們需要使用spring-data-jpa來幫我們實現對用戶表的增刪改查,先去寫一個接口,集成jpa:

a17cd38eda6657d2a2cdb0dc9940b134.png

85683e9174687ba2fbb1e302f52fff9d.png

package com.springboot.study.service;

import org.springframework.data.jpa.repository.JpaRepository;

import com.springboot.study.bean.User;
public interface UserService extends JpaRepository{

}

我們只需要寫上類名和主鍵的類型,即可。

9e1c29487932689a30d58c5365fbf6c0.png

其他什么都不用寫,就OK啦。

編寫Controller:

e261dc5abe79ba2c2b6158ed8db1ccef.png

代碼:

package com.springboot.study.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import com.springboot.study.bean.User;
import com.springboot.study.service.UserService;

@RestController
public class UserController {

@Autowired
private UserService userService;

/**
* 獲取所有的用戶列表
* @return
*/
@RequestMapping("findAllUsers")
public ListfindAllUsers(){
return userService.findAll();
}

}

因為邏輯比較簡單,我就直接給出一個例子了,啟動項目,看結果。。

這次啟動時間稍微長了一點:

ed0456591cf89f3d603034e71323b06b.png

瀏覽器輸入:
http://localhost:8088/demo/findAllUsers

返回:

030dc54798a8219820ac1337d58682c1.png

nice!

SpringBoot果然好用,一句sql都沒寫,甚至實現方法都沒寫,我們就完成了功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371274.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371274.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371274.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaOne 2012:Lambda之路

我最熱切期待的JavaOne 2012演講之一是Brian Goetz的“通往Lambda的道路”。 昨晚的技術主題演講中的Lambda味道僅增加了預期。 這是在希爾頓廣場A / B舉行的&#xff0c;距離我上次在金門大橋A / B / C參加的演講僅幾步之遙。 我原本希望打包相對較大的Plaza A / B&#xff08…

沉浸式go-cache源碼閱讀!

大家好&#xff0c;我是豆小匠。 這期來閱讀go-cache的源碼&#xff0c;了解本地緩存的實現方式&#xff0c;同時掌握一些閱讀源碼的技巧~ 1. 源碼獲取 git clone https://github.com/patrickmn/go-cache.git用Goland打開可以看到真正實現功能的也就兩個go文件&#xff0c;ca…

CoreAnimation 變換

CoreAnimation 變換 CoreAnimation 目錄 博客園MakeDown支持不佳,如有需要請進GitHub 本片博客主要內容: 仿射變換 - CGAffineTransform3D變換 - CATransform3D仿射變換 - CGAffineTransform CGAffineTransform 是用于二維空間的旋轉,縮放和平移的屬性.首先展示一個簡單的樣例,…

20170907wdVBA_GetCellsContentToExcel

WORD 加載項 代碼模板 Dim cmdBar As CommandBar, cmdBtn As CommandBarControl Const cmdBtnCap As String "批量提取操作步驟"Sub AutoExec()Call DelCmdBtnCall AddCmdBtnEnd Sub Sub AutoExit()Call DelCmdBtn End SubSub AddCmdBtn()Set cmdBar Application.C…

mysql 5.7 mirror_Centos7 Docker離線部署Mysql5.7

1 環境信息查看系統內核[rootlocalhost /]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)2 虛擬機拉取鏡像此處資源獲取在虛擬機中進行&#xff0c;完成后上傳到服務器安裝2.1 拉取mysql5.7鏡像[rootlocalhost /]# docker pull mysql:5.72.2 導出鏡像[rootloc…

Java中的簡單REST客戶端

如今&#xff0c;大多數用于與某些服務器通信的移動應用程序都使用REST服務。 這些服務也是與JavaScript或jQuery一起使用的常見做法。 現在&#xff0c;我知道在Java中為REST服務創建客戶端的2種方法&#xff0c;在本文中&#xff0c;我將嘗試演示這兩種方法&#xff0c;希望它…

3.20 下午

閱讀《藝術學概論》 戲劇沖突是戲劇的靈魂 沖突包括&#xff1a;人物性格的沖突、行為的沖突、 思想感情的沖突乃至心理狀態的沖突等等 轉載于:https://www.cnblogs.com/bgd140206110/p/6590005.html

華為root工具_華為Mate9解鎖后無法ROOT 需要手動刷入Recovery怎么辦【解決方法】...

很多朋友手機到手之后&#xff0c;都希望能夠ROOT使用更多的系統功能。近日有網友向小編詢問&#xff0c;為何華為Mate9解鎖后無法ROOT&#xff0c;明明已經通過官方的解鎖教程解鎖的&#xff0c;但是之后使用“大師”等第三方刷機工具&#xff0c;無法ROOT。其實ROOT的關鍵就在…

JAX-WS入門

JAX-WS代表XML Web Services的Java API。 它是一種Java編程語言API&#xff0c;用于創建Web服務和使用XML進行通信的客戶端。 這篇文章是JAX-WS的快速入門。 先決條件 GlassFish與Eclipse集成在一起 。 創建JAX-WS Web服務 1.在Eclipse中創建一個名為“ com.eviac.blog.jax…

canvas 圖片反色

代碼實例&#xff1a; <!DOCTYPE HTML> <html> <head><meta charset"utf-8"><title>圖片反色</title><style type"text/css">body{ background:black;}#c1{ background:white;}</style><script type&q…

python中的文件父路徑怎么表達_python中的文件父路徑怎么表達_如何在Python中訪問父目錄...

所以我有一個朋友給我的Python腳本&#xff0c;但是我沒有Python的經驗。代碼如下&#xff1a;from os import path, chdir, listdir, mkdir, getcwdfrom sys import argvfrom zipfile import ZipFilefrom time import sleep#Defines what extensions to look for within the f…

Maven的中央倉庫地址

www.mvnrepository.com轉載于:https://www.cnblogs.com/j-liu3323/p/6590435.html

Spring–添加AOP支持

我聽到了一個有關一位高級&#xff08;且酬勞頗豐&#xff09;軟件工程師的故事。 他的任務是記錄他正在研究的項目中每個控制器中的每個方法。 工程師重寫了所有控制器方法&#xff0c;因此使用如下代碼&#xff1a; RequestMapping(method RequestMethod.GET)public String …

vscode python第三方庫檢測_VSCode中使用Pylint檢查python代碼

為什么使用lint在日常開發中&#xff0c;不同開發人員會寫下不同風格的代碼&#xff0c;導致代碼可維護性變差&#xff0c;為了解決風格不一致問題&#xff0c;我們可以制定代碼規范&#xff0c;讓開發人員都遵守同樣的規范編寫代碼。在開發過程中&#xff0c;部分代碼存在質量…

Spring MVC-集成(Integration)-集成LOG4J示例(轉載實踐)

以下內容翻譯自&#xff1a;https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm 說明&#xff1a;示例基于Spring MVC 4.1.6。 以下示例說明如何使用Spring Web MVC框架來觸發LOG4J。首先&#xff0c;讓我們使用Eclipse IDE&#xff0c;并按照以下步驟使用Spring W…

NUMA架構和Java

是時候部署您的應用程序了&#xff0c;期待著采購最適合負載要求的硬件。 如今&#xff0c;具有40核或80核的包裝盒非常普遍。 總體概念是更多的內核&#xff0c;更多的處理能力&#xff0c;更多的吞吐量。 但是我看到了一些相反的結果&#xff0c;表明小型的CPU密集型測試運行…

存儲過程常用技巧

我們在進行pl/sql編程時打交道最多的就是存儲過程了。存儲過程的結構是非常的簡單的&#xff0c;我們在這里除了學習存儲過程的基本結構外&#xff0c;還會學習編寫存儲過程時相關的一些實用的知識。如&#xff1a;游標的處理&#xff0c;異常的處理&#xff0c;集合的選擇等等…

vue是用a標簽打開新頁面_vue 在新窗口打開頁面并設置不同的背景

開發一個新系統&#xff0c;前端用的vue&#xff0c;vue是單體應用&#xff0c;所有頁面都在一個窗口里實現&#xff0c;但項目要求在點button鏈接后要新打開一個瀏覽器頁面&#xff0c;解決方法如下&#xff1a;1. 給此button設置新事件 click"createdefect"提交缺陷…

卡爾曼濾波的推導

卡爾曼濾波的推導1 最小二乘法在一個線性系統中&#xff0c;若\(x\)為常量&#xff0c;是我們要估計的量&#xff0c;關于\(x\)的觀測方程如下&#xff1a; \[ y Hx v \tag{1.1}\] \(H\)是觀測矩陣&#xff08;或者說算符&#xff09;&#xff0c;\(v\)是噪音&#xff0c;\(y…

Java注釋-保留

考慮一下Java批注&#xff1a; public interface AnAnnotaton {}帶有此注釋的類&#xff1a; AnAnnotaton class AnAnnotatedClass{}還有一個測試&#xff0c;檢查類中是否存在此批注&#xff1a; import static org.hamcrest.MatcherAssert.assertThat; import static org.h…