初識springboot-第一個springboot練習


第一次跟着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進行測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章