日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

使用gin和gorm框架完成的bubble小清单项目

發布時間:2025/3/21 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用gin和gorm框架完成的bubble小清单项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

bubble小項目

  • bubble小清單項目
    • 1. 使用gin框架來做服務端,回應瀏覽器發送的請求
      • 1.gin.Default() 啟動一個默認的路由
        • 1.前端頁面需要加載靜態文件
        • 2.靜態文件加載地址
        • 3.處理瀏覽器發送的GET訪問請求
        • 4. 定義一個路由組來處理瀏覽器發送的各種請求
      • 2.controller文件包含處理瀏覽器發送的各種請求
        • 1.controller.BubbleHandle
        • 2. controller.CreateTodo
        • 3. controller.LookTodoList
        • 4. controller.UpdateTodo
        • 5. controller.DeleteTodo
    • 2. 使用 gorm 框架來連接數據庫,實現增刪改查
      • 1.創建連接mysql文件
      • 2. 創建models文件代表與數據庫相關的操作都在這進行
      • 3. 創建結構體與客戶端發送來的數據進行綁定
      • 4. 完成各種操作(增刪改查)
        • 1.CreateData
        • 2. ShowData
        • 3. UpDateTodo
        • 4. Save
        • 5. DeleteTodo
    • 3.具體使用

bubble小清單項目

1. 使用gin框架來做服務端,回應瀏覽器發送的請求

1.gin.Default() 啟動一個默認的路由

r := gin.Default()返回一個默認的引擎 *gin.Engine類型

下面我們就要使用r來做事情

1.前端頁面需要加載靜態文件

使用r.LoadHTMLGlob() 方法

2.靜態文件加載地址

使用r.Static()方法

3.處理瀏覽器發送的GET訪問請求

r.GET("/bubble", controller.BubbleHandle)

4. 定義一個路由組來處理瀏覽器發送的各種請求

v1Group := r.Group("v1"){// 4.1 添加發送的POST請求v1Group.POST("/todo", controller.CreateTodo)// 4.2 查看所有的待辦事項v1Group.GET("/todo", controller.LookTodoList)// 4.3 修改狀態為完成或者未完成v1Group.PUT("todo/:id", controller.UpdateTodo)// 4.4 刪除已經完成的待辦事項v1Group.DELETE("todo/:id", controller.DeleteTodo)}

2.controller文件包含處理瀏覽器發送的各種請求

1.controller.BubbleHandle

處理一開始瀏覽器發送的GET請求

func BubbleHandle(c *gin.Context){c.HTML(http.StatusOK, "index.html", nil) }

返回一個HTML頁面

2. controller.CreateTodo

在數據庫表中創建一個新的元素

func CreateTodo (c *gin.Context) {// 前端頁面填寫待辦事項, 點擊提交就會發送POST請求到這里// 1.從請求中把數據拿出來var todo models.Todoc.BindJSON(&todo)// 2.存入數據庫if err := models.CreateData(&todo); err != nil{c.JSON(http.StatusBadRequest, gin.H{"error" : err.Error()})}else {// 3.返回響應c.JSON(http.StatusOK, todo)} }

3. controller.LookTodoList

在瀏覽器頁面展示數據庫中現有的數據

func LookTodoList(c *gin.Context) {// 查詢todo這個表里面的所有數據var todoList []models.Todoif err := models.ShowData(&todoList); err != nil {c.JSON(http.StatusOK, gin.H{"error" : err.Error()})}else {c.JSON(http.StatusOK, todoList)} }

4. controller.UpdateTodo

修改待辦事項的狀態

func UpdateTodo(c *gin.Context) {// 拿到id之后更新status狀態即可id := c.Params.ByName("id")var todo models.Todoif err := models.UpdateTodo(&todo, id); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error" : err.Error()})}else {c.JSON(http.StatusOK, todo)}// BindJSON將json文件于todo綁定修改狀態c.BindJSON(&todo)models.Save(todo) }

5. controller.DeleteTodo

在客戶端點擊刪除, 即發送DELETE請求,同時在數據庫里面刪除即可

func DeleteTodo (c *gin.Context) {id := c.Params.ByName("id")var todo models.Todoif err := models.DeleteTodo(&todo, id); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error" : err.Error()})}else {c.JSON(http.StatusOK, gin.H{id : "deleted"})} }

具體說明各種處理函數的具體執行都是由models文件里面的gorm框架來操作完成

2. 使用 gorm 框架來連接數據庫,實現增刪改查

1.創建連接mysql文件

聲明一個全局的*gorm.DB變量用來與數據庫之間的操作

重要的一點是需要與下文的models.Todo進行結構體綁定使用AutoMigrate方法

package databaseimport ("fmt""gin_demo/lesson15/models""gorm.io/driver/mysql""gorm.io/gorm""time" )var GlobalDB *gorm.DBfunc InitMysql(){dsn := "root:admin@tcp(127.0.0.1:3306)/bubble?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println(err)return}sqlDB, err := db.DB()if err != nil {return}sqlDB.SetMaxOpenConns(100)sqlDB.SetMaxIdleConns(10)sqlDB.SetConnMaxLifetime(time.Hour)GlobalDB = db// 模型綁定GlobalDB.AutoMigrate(&models.Todo{})fmt.Println("連接成功") }

2. 創建models文件代表與數據庫相關的操作都在這進行

3. 創建結構體與客戶端發送來的數據進行綁定

type Todo struct {// json標簽表示在瀏覽器中這個字段的模樣ID int `json:"id"`Title string `json:"title"`Status bool `json:"status"` }

注意這里字段的首字母需要大寫,這樣才對外部的包可見

4. 完成各種操作(增刪改查)

1.CreateData

在表中插入一段數據,使用了GlobalDB.Create()方法需要傳入綁定的結構體指針

2. ShowData

在客戶端展示數據庫中現有的數據元素,使用了GlobalDB.Find()方法,將todoList切片指針傳入并且沒有任何查詢條件,就會將查詢到的數據全部綁定在todoList中,即可展示全部數據

3. UpDateTodo

根據傳入的id值找到一條特定的元素,并將元素綁定至todo結構體中, 在調用函數的地方使用c.BindJSON()方法修改status的狀態

4. Save

使用GlobalDB.Save(todo)方法保存即可

5. DeleteTodo

使用GlobalDB.Where().Delete()即可 根據傳入的id找到一條特定的元素, 并且將其刪除即可

func CreateData(todo *Todo) (err error){if err = database.GlobalDB.Create(&todo).Error; err != nil{return nil}return }func ShowData(todoList *[]Todo)(err error){if err = database.GlobalDB.Find(&todoList).Error; err != nil {return nil}return }func UpdateTodo(todo *Todo, id string) (err error){if err = database.GlobalDB.Where("id = ?", id).First(&todo).Error; err != nil {return nil}return }func Save(todo Todo){database.GlobalDB.Save(todo) }func DeleteTodo(todo *Todo, id string)(err error) {if err = database.GlobalDB.Where("id = ?", id).Delete(&todo).Error; err != nil{return nil}return }

3.具體使用



總結

以上是生活随笔為你收集整理的使用gin和gorm框架完成的bubble小清单项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。