spring-boot两小时入门笔记
生活随笔
收集整理的這篇文章主要介紹了
spring-boot两小时入门笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
初始化好工程之后
入門
新建一個HelloController.java
package com.example.girl1;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;@RestController public class HelloController {@RequestMapping(value = "/girl",method = RequestMethod.GET)public String say(){return "1111111";} }復制代碼在瀏覽器中輸入localhost:8080/girl 內容就是1111111
啟動方式
1. idea直接啟動
2. mvn
- mvn spring-boot:run
3. 打包成jar包啟動
- mvn install
- cd target
- java -jar jar包名
項目屬性配置
resource 目錄下 將application.xxx修改成application.yml
server:port: 8080servlet:context-path: /first 復制代碼之后訪問就得 :http://localhost:8080/first/girl
配置文件屬性的使用
server:port: 8080 cupSize: A復制代碼HelloController.java中
@RestController public class HelloController {// 通過注解把配置文件中的cupSize注入到變量中@Value("${cupSize}")private String cupSize;@RequestMapping(value = "/girl",method = RequestMethod.GET)public String say(){return cupSize;} } 復制代碼打開瀏覽器就能看到cupSize了
屬性多的時候就加個前綴來區(qū)分
新建一個類 GirlProperties.java
package com.example.girl1;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;// 獲取前綴是girl的配置 @Component @ConfigurationProperties(prefix = "girl") public class GirlProperties {private String cupSize;private Integer age;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getCupSize() {return cupSize;}public void setCupSize(String cupSize) {this.cupSize = cupSize;} }復制代碼配置文件
server:port: 8080 girl:cupSize: Aage: 18 復制代碼HelloController
@RestController public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = "/girl",method = RequestMethod.GET)public Integer say(){return girlProperties.getAge();} } 復制代碼這樣就能做到用前綴來區(qū)分,自己打開瀏覽器看看就明白了
配置的開發(fā)環(huán)境和生產環(huán)境
- application.yml
- application-dev.yml
- application-prod.yml
- 可以在idea中啟動開發(fā)環(huán)境,
- 在mvn install 后生成的jar包啟動開發(fā)環(huán)境
Controller的使用
- @Controller 處理http請求
- @RestController Spring4之后新加的注解,原來返回json需要@RequestBody配合@Controller(RestController相當于這兩個的組合RequestBody和Controller)
- @RequestMapping 配置url映射
@RequestMapping
// 如果想訪問兩個 @RequestMapping(value = {"/girl","/hello"},method = RequestMethod.GET) 復制代碼// 可以給類加,訪問就得 :localhost:8080/hello/girl了 @RestController @RequestMapping("/hello") public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl"},method = RequestMethod.GET)public Integer say(){return girlProperties.getAge();} } // RequestMethod方式有很多 可以使用postman來測試api 復制代碼處理url里面的參數
- @PathVariable 獲取url里面的數據
- @RequestParam 獲取請求參數的值
- @GetMapping 組合注解
@PathVariable
@RestController public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl/{id}"},method = RequestMethod.GET)public Integer say(@PathVariable("id") Integer myId){return myId;} } // localhost:8080/girl/100 復制代碼@RequestParam
//localhost:8080/girl?id=100 @RestController public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl"},method = RequestMethod.GET)public Integer say(@RequestParam("id") Integer myId){return myId;} } // 另一種寫法 @RestController public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl"},method = RequestMethod.GET)// 默認值和是否必須傳入public Integer say(@RequestParam(value = "id",required = false,defaultValue = "10") Integer myId){return myId;} } // RequestMapping 可以寫成GetMapping 復制代碼數據庫操作
在pom.xml導入包
// jpa和mysql的<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency> 復制代碼結束后導入一下包
配置文件的配置
// 運行前先新建一個dbgirl的數據庫,utf8mb4 // application.yml spring:profiles:active: devdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/dbgirlusername: rootpassword: 123456jpa:hibernate:ddl-auto: update // create會把之前的表刪掉在新建一個show-sql: true 復制代碼新建一個Girl類
package com.example.girl1;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; // 這個注解表示這個類就是對應數據庫中的表 @Entity public class Girl {@Id@GeneratedValueprivate Integer id;private String cupSize;private Integer age;public Girl() {}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getCupSize() {return cupSize;}public void setCupSize(String cupSize) {this.cupSize = cupSize;} } // 之后表中的那些字段就是girl類中對應過去的 復制代碼接口編寫
get /girls 獲取女生列表post /girls 創(chuàng)建一個女生get /girls/id 通過id查詢一個女生put /girls/id 通過id更新一個女生delete /girls/id 通過id刪除一個女生 復制代碼獲取女生列表
新建一個GirlRepository.java的接口
package com.example.girl1;import org.springframework.data.jpa.repository.JpaRepository;// Girl類名,Integer是id的類型 public interface GirlRepository extends JpaRepository<Girl,Integer> {}復制代碼新建GirlController.java
package com.example.girl1;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;import java.util.List; @RestController public class GirlController {@Autowiredprivate GirlRepository girlRepository;/** 查詢女生列表* */@GetMapping(value = "/girls")public List<Girl> girlList(){return girlRepository.findAll();} } // 使用postman測試 復制代碼創(chuàng)建一個女生
/** 新增一個女生* */@PostMapping(value = "/girls")public Girl girlAdd(@RequestParam("cupSize") String cupSize,@RequestParam("age") Integer age){Girl girl = new Girl();girl.setCupSize(cupSize);girl.setAge(age);return girlRepository.save(girl);} 復制代碼通過id查詢一個女生
// 查詢一個女生@GetMapping(value = "/girls/{id}")public Girl girlFindOne(@PathVariable("id") Integer id){return girlRepository.findById(id).orElse(null);} 復制代碼通過id更新一個女生
// 更新@PutMapping(value = "/girls/{id}")public Girl girlUpdate(@PathVariable("id") Integer id,@RequestParam("cupSize") String cupSize,@RequestParam("age") Integer age){Girl girl = new Girl();girl.setId(id);girl.setCupSize(cupSize);girl.setAge(age);return girlRepository.save(girl);} 復制代碼通過id刪除一個女生
// 刪除@DeleteMapping(value = "/girls/{id}")public void girlDelete(@PathVariable("id") Integer id){girlRepository.deleteById(id);} 復制代碼通過年齡查詢女生列表
// 通過年齡查詢女生列表@GetMapping(value = "/girls/age/{age}")public List<Girl> girlListByAge(@PathVariable("age") Integer age){return girlRepository.findByAge(age);} 復制代碼GirlRepository.java中
package com.first.first;import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;public interface GirlRepository extends JpaRepository<Girl,Integer> {// 通過年齡查詢public List<Girl> findByAge(Integer age); }復制代碼事務管理
需求是如果我有兩條數據,一條插入失敗的話另一條就不能插入,這時候需要加一個事務
GirlService.java
package com.example.girl1;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;@Service public class GirlService {@Autowiredprivate GirlRepository girlRepository;@Transactionalpublic void insertTwo(){Girl girlA= new Girl();girlA.setAge(10);girlA.setCupSize("B");girlRepository.save(girlA);Girl girlB= new Girl();girlA.setAge(11);girlA.setCupSize("F");girlRepository.save(girlB);} }// 在Girlcontroller里新增@Autowiredprivate GirlService girlService;@PostMapping(value = "/girls/two")public void girlTwo(){girlService.insertTwo();}復制代碼總結
以上是生活随笔為你收集整理的spring-boot两小时入门笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟机配置网络eth1
- 下一篇: grub配置文件丢失的情况下修复