在實際的開發過程中,我們需要前端頁面向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
即可看到效果:
如果我們參數后面什么都不寫:
http://localhost:8088/demo/login?username=
那么返回就是空:
我們可以設置參數的默認值:
@RequestMapping("login")
public String login(@RequestParam(value="username",defaultValue="未知用戶") String username){
return "用戶名:" + username;
}
再次訪問:http://localhost:8088/demo/login?username=
得:
接下來,我們來演示如何在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:
代碼:
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設置為自增長。
然后,啟動項目,發現數據庫的表已經自動生成了。
在上一節的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:
package com.springboot.study.service;
import org.springframework.data.jpa.repository.JpaRepository;
import com.springboot.study.bean.User;
public interface UserService extends JpaRepository{
}
我們只需要寫上類名和主鍵的類型,即可。
其他什么都不用寫,就OK啦。
編寫Controller:
代碼:
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();
}
}
因為邏輯比較簡單,我就直接給出一個例子了,啟動項目,看結果。。
這次啟動時間稍微長了一點:
瀏覽器輸入:
http://localhost:8088/demo/findAllUsers
返回:
nice!
SpringBoot果然好用,一句sql都沒寫,甚至實現方法都沒寫,我們就完成了功能。