文章目錄
第一次跟着MOOC上學springboot,這也是我的第一個springboot項目,學了一下感覺還是有點收穫,在這裏簡單總結一下,由於沒有系統的學,,所以,下面,可能不是正確,屬於個人見解,如有錯誤,請多指正
一:配置
這個東西很牛逼,也很複雜,現在只知道,可以把相當於全局變量可以寫在這裏,也可以寫一些相關配置信息,可以使用yml格式,把原來的配置文件刪除
可以看看這個練習的相關例子,這就是application,yml裏面的
#用來指定項目運行的端口
server:
port: 8081
servlet:
context-path: /luckmoney
#用來配置limit對象數組的值
limit:
minMoney: 1
maxMoney: 200
description: 最少要${limit.minMoney}元,最多${limit.maxMoney}
# 用來配置MySQL數據庫的配置,用來配合luckymoneyRepository
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/db_ai?useSSL=true&characterEncoding=utf-8&serverTimezone=GMT
username: root
password: 9631
# 用來配置hibernate,第一次可以用create,之後要改爲update,可以顯示MySQL語句在控制檯
jpa:
hibernate:
ddl-auto: update
show-sql: true
二:使用註解
第一次瞭解到註解是servlet,使用了註解,如今見到了註解,雖然有點熟悉,但是還是不是很熟悉,所以,下面,可能不是正確,屬於個人見解,如有錯誤,請多指正
@RestController
放在一個要在頁面顯示信息的java類,他可以用@Controller 與 @ResponseBody代替,也就是@RestController=@Controller + @ResponseBody
@RequestMapping("/hello")
這個註解用來,可以在地址欄中輸入其中的名稱可以到達指定的頁面,這個這只是一箇中間的一個,要具體的頁面,可在這個類中的方法中使用@GetMapping
@Autowired
這個相當於import 一個其他的類
@GetMapping("/luckymoney/{id}") 或 @GetMapping("/luckymoneys")
用來可以通過地址欄輸入到達頁面,第一個需要參數,第二個不需要
可以看看第一個使用時,URL怎麼輸入
@PostMapping("/luckymoneys")
這個使用post方法,不可以通過地址欄輸入,參數,使用位置如上一個getmapping
@Component 和 @ConfigurationProperties(prefix = “limit”)
2個一起使用的,用來表示一個對象數組,具體的值,可以在配置文件中初始化
@Service
用來與數據庫的交互層的一個註解
三: 數據庫建表註解 @Entity
用來數據庫建表的一個類的註解
@Id 與 @GeneratedValue
數據庫中主鍵的一個註解
@Transactional
數據庫事務處理的註解
四:部分代碼
然後這次學到的基本的註解,差不多講完了,覺得這次最重要的是知道import類的註解,然後可以通過請求顯示頁面的註解,然後就是配置文件與數據庫的操作了,下面就給出這幾部分的代碼
建庫
配置文件添加依賴,導包
配置文件配置數據庫
# 用來配置MySQL數據庫的配置,用來配合luckymoneyRepository
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/db_ai?useSSL=true&characterEncoding=utf-8&serverTimezone=GMT
username: root
password: 9631
# 用來配置hibernate,第一次可以用create,之後要改爲update,可以顯示MySQL語句在控制檯
jpa:
hibernate:
ddl-auto: update
show-sql: true
繼承jpa一個接口,用來進行數據庫的各種操作
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
//用來實現數據庫建表,通過jpa的接口可以實現數據庫的操作
public interface LuckymoneyRepository extends JpaRepository<Luckymoney,Integer> {
}
建表
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.math.BigDecimal;
//用來進行數據庫建表
@Entity
public class Luckymoney {
@Id
@GeneratedValue
private Integer id;
private BigDecimal money;
private String producer;
private String consumer;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
public String getProducer() {
return producer;
}
public void setProducer(String producer) {
this.producer = producer;
}
public String getConsumer() {
return consumer;
}
public void setConsumer(String consumer) {
this.consumer = consumer;
}
}
數據庫的增刪並顯示結果的頁面
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
@RestController
public class LuckymoneyController {
//用來進行數據庫的增刪查
@Autowired
private LuckymoneyRepository repository;
// 用來進行服務
@Autowired
private LuckymoneyService service;
// 獲取紅包列表
@GetMapping("/luckymoneys")
public List<Luckymoney> list(){
return repository.findAll();
}
// 創建紅包,發紅包
@PostMapping("/luckymoneys")
public Luckymoney create(@RequestParam("producer") String producer,
@RequestParam("money") BigDecimal money){
Luckymoney luckymoney=new Luckymoney();
luckymoney.setProducer(producer);
luckymoney.setMoney(money);
return repository.save(luckymoney);
}
// 通過ID查詢紅包
@GetMapping("/luckymoney/{id}")
public Luckymoney findById(@RequestParam("id") Integer id){
return repository.findById(id).orElse(null);
}
// 更新紅包,領紅包
@PutMapping("/luckymoney/{id}")
public Luckymoney update(@RequestParam("id") Integer id,
@RequestParam("consumer") String consumer){
// 先查詢數據
Optional<Luckymoney> optional=repository.findById(id);
if(optional.isPresent()) {
Luckymoney luckymoney = optional.get();
luckymoney.setConsumer(consumer);
return repository.save(luckymoney);
}
return null;
}
// 發2個紅包
@PostMapping("/luckymoney/two")
public void createTwo(){
service.createTwo();
}
}
與數據庫交互層的service類
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sun.plugin.net.proxy.PluginProxyInfo;
import java.math.BigDecimal;
@Service
public class LuckymoneyService {
@Autowired
private LuckymoneyRepository repository;
@Transactional //事務處理(如果其中一個執行出錯,就會整個撤消事件),有些引擎不支持事務,可以切換引擎,比如inoDb
public void createTwo(){
Luckymoney luckymoney1=new Luckymoney();
luckymoney1.setProducer("zhangshan");
luckymoney1.setMoney(new BigDecimal("520"));
repository.save(luckymoney1);
Luckymoney luckymoney2=new Luckymoney();
luckymoney2.setProducer("zhangshan");
luckymoney2.setMoney(new BigDecimal("1314"));
repository.save(luckymoney2);
}
}
這次就完了,第一次接觸springboot,全部代碼 https://github.com/TTTBBB-GitHub/luckymoney.git
如有錯誤,請多指正,這只是一個練習,沒有界面,沒有完備的系統,很基礎,可以學習基本操作,用工具postman進行測試