日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

bubble小項(xiàng)目

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

bubble小清單項(xiàng)目

1. 使用gin框架來做服務(wù)端,回應(yīng)瀏覽器發(fā)送的請求

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

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

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

1.前端頁面需要加載靜態(tài)文件

使用r.LoadHTMLGlob() 方法

2.靜態(tài)文件加載地址

使用r.Static()方法

3.處理瀏覽器發(fā)送的GET訪問請求

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

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

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

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

1.controller.BubbleHandle

處理一開始瀏覽器發(fā)送的GET請求

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

返回一個HTML頁面

2. controller.CreateTodo

在數(shù)據(jù)庫表中創(chuàng)建一個新的元素

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

3. controller.LookTodoList

在瀏覽器頁面展示數(shù)據(jù)庫中現(xiàn)有的數(shù)據(jù)

func LookTodoList(c *gin.Context) {// 查詢todo這個表里面的所有數(shù)據(jù)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

修改待辦事項(xiàng)的狀態(tài)

func UpdateTodo(c *gin.Context) {// 拿到id之后更新status狀態(tài)即可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綁定修改狀態(tài)c.BindJSON(&todo)models.Save(todo) }

5. controller.DeleteTodo

在客戶端點(diǎn)擊刪除, 即發(fā)送DELETE請求,同時在數(shù)據(jù)庫里面刪除即可

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"})} }

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

2. 使用 gorm 框架來連接數(shù)據(jù)庫,實(shí)現(xiàn)增刪改查

1.創(chuàng)建連接mysql文件

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

重要的一點(diǎn)是需要與下文的models.Todo進(jìn)行結(jié)構(gòu)體綁定使用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. 創(chuàng)建models文件代表與數(shù)據(jù)庫相關(guān)的操作都在這進(jìn)行

3. 創(chuàng)建結(jié)構(gòu)體與客戶端發(fā)送來的數(shù)據(jù)進(jìn)行綁定

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

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

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

1.CreateData

在表中插入一段數(shù)據(jù),使用了GlobalDB.Create()方法需要傳入綁定的結(jié)構(gòu)體指針

2. ShowData

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

3. UpDateTodo

根據(jù)傳入的id值找到一條特定的元素,并將元素綁定至todo結(jié)構(gòu)體中, 在調(diào)用函數(shù)的地方使用c.BindJSON()方法修改status的狀態(tài)

4. Save

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

5. DeleteTodo

使用GlobalDB.Where().Delete()即可 根據(jù)傳入的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.具體使用



總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人羞羞免费 | 亚洲精品乱码久久 | 小色瓷导航 | www.九九热.com| 国精产品一区二区 | 超碰超碰| 婷婷综合在线 | 天天射天天草 | 免费日本黄色网址 | 欧美精选一区二区 | 国产99在线 | 亚洲 | 欧美激情在线 | 激情三级在线 | 国产伦精品一区二区三区88av | 日本一区二区三区在线免费观看 | 亚洲免费专区 | 国产99页 | 19韩国主播青草vip | 亚洲欧美伦理 | 能看av的网址 | 国产三级视频在线播放 | 国产福利在线看 | 女儿的朋友4在线观看 | 中文字幕一区视频 | 亚洲熟妇无码一区二区三区导航 | 好吊妞视频这里只有精品 | 黑人导航 | 欧美手机在线 | 免费在线黄色av | 欧美日韩激情视频 | 亚洲精品xxx | 在线黄色网 | 国产乱码精品一区二区三区五月婷 | 色一区二区 | 久久精品区 | 成人日韩欧美 | 久婷婷 | 久草视频免费播放 | 三级全黄的视频 | 天堂在线一区 | 国产麻豆网 | 亚洲开心网 | 男生操女生屁股 | 久久久久亚洲精品中文字幕 | 999热精品视频| 亚洲精品在线一区二区 | 日韩欧美亚洲一区二区三区 | 国产一区免费在线观看 | 久操青青 | 久久精品视频在线 | 国产欧美一区二区三区国产幕精品 | 国产精品视频麻豆 | 国产精品69久久久久孕妇欧美 | 视频一二三区 | 日本一级免费视频 | 国产亚洲精品精品国产亚洲综合 | 国产精品6| 丝袜视频在线 | 亚洲一区二区三区在线视频观看 | 日韩在线免费 | 天堂а√在线最新版中文在线 | 黄色一级视频网站 | 欧美精品国产一区二区 | 性欧美成人播放77777 | 国产婷婷色一区二区在线观看 | 黄色在线免费视频 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 欧美日韩在线国产 | 91三级视频 | 亚洲理伦 | 90岁肥老奶奶毛毛外套 | 福利在线视频导航 | 中文日韩| 人人草人人干 | 一级少妇精品久久久久久久 | 婷婷综合社区 | 丰满肥臀噗嗤啊x99av | 亚洲成人精品一区二区 | 日本一级一片免费视频 | 色伊人久久| 极品女神无套呻吟啪啪 | 性做久久久久久久久 | 哪里可以免费看毛片 | 欧美第三页| 成人精品在线观看视频 | av拍拍拍 | 五月天婷婷视频 | 国产区一区二区 | 无码无遮挡又大又爽又黄的视频 | 欧美乱码精品一区二区 | 福利国产在线 | 亚洲天堂久久久久 | 国产精品久久一区二区三区 | 成人免费在线观看网站 | www.色啪啪.com| 毛片在哪看 | 成人av免费在线 | 青青青国内视频在线观看软件 | 激情综合丁香五月 |