golang?gorm實(shí)現(xiàn)get請求查詢案例測試
更新時(shí)間:2022年04月16日 09:07:55 作者:Jeff的技術(shù)棧
這篇文章主要為大家介紹了golang?gorm實(shí)現(xiàn)get請求查詢案例測試,
案例
package main
import (
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"github.com/gin-gonic/gin"
)
//班級-學(xué)生:一對多
type Class struct {
gorm.Model
ClassName string
Students []Student //班級有多個(gè)學(xué)生
}
//學(xué)生-學(xué)生卡:一對一
type Student struct {
gorm.Model
StudentName string
ClassID uint //學(xué)生屬于一個(gè)班級
IDCard IDCard // 一個(gè)學(xué)生只有一個(gè)學(xué)生卡
Teachers []Teacher `gorm:"many2many:Student_Teacher;"` //一個(gè)學(xué)生有多個(gè)老師
}
type IDCard struct {
gorm.Model
StudentID uint //一張卡只屬于一個(gè)學(xué)生
Money int //卡里余額
}
//老師-學(xué)生:多對多
type Teacher struct {
gorm.Model
TeacherName string
Students []Student `gorm:"many2many:Student_Teacher;"` //老師教多個(gè)學(xué)生
}
func main() {
db, _ := gorm.Open("mysql", "root:admin123@/beego_test?charset=utf8&parseTime=True&loc=Local")
db.AutoMigrate(&Class{},&Student{},&IDCard{},Teacher{})
defer db.Close()
// 測試數(shù)據(jù)
//i := IDCard{
// Money:99,
//}
//s := Student{
// StudentName:"chary",
// IDCard : i,
//}
//c := Class{
// ClassName:"超神學(xué)院",
// Students: []Student{s},
//}
//t := Teacher{
// TeacherName:"雅典啦老師",
// Students: []Student{s},
//}
//
//_ = db.Create(&c).Error
//_ = db.Create(&t).Error
r:=gin.Default()
r.POST("/student", func(c *gin.Context) {
var student Student
_ = c.BindJSON(&student)
db.Create(&student)
})
r.GET("/student/:ID", func(c *gin.Context) {
id := c.Param("ID")
var student Student
_ = c.BindJSON(&student)
db.Preload("Teachers").Preload("IDCard").First(&student,"id=?",id)
c.JSON(200,gin.H{
"msg":student,
})
})
r.GET("/class/:ID", func(c *gin.Context) {
id := c.Param("ID")
var class Class
_ = c.BindJSON(&class)
db.Preload("Students").Preload("Students.Teachers").First(&class,"id=?",id)
c.JSON(200,gin.H{
"msg":class,
})
})
_ = r.Run(":8080")
}
查詢班級get請求

查詢學(xué)生get請求

以上就是golang gorm實(shí)現(xiàn)get請求查詢案例測試的詳細(xì)內(nèi)容,更多關(guān)于golang gorm測試get請求查詢的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
go語言中嵌套結(jié)構(gòu)體的實(shí)現(xiàn)
在Go語言中,嵌套結(jié)構(gòu)體可定義為一個(gè)結(jié)構(gòu)體內(nèi)包含另一個(gè)結(jié)構(gòu)體,嵌套可以是值嵌套或指針嵌套,兩者在內(nèi)存分配和修改影響上有顯著區(qū)別,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下2024-09-09
重學(xué)Go語言之基礎(chǔ)數(shù)據(jù)類型詳解
Go語言有非常強(qiáng)大的數(shù)據(jù)類型系統(tǒng),其支持的數(shù)據(jù)類型大體上可分為四類:基礎(chǔ)數(shù)據(jù)類型、引用數(shù)據(jù)類型、接口類型、復(fù)合類型。本文就來講講它們各自的用法吧2023-02-02
Go語言實(shí)現(xiàn)廣播式并發(fā)聊天服務(wù)器
本文主要介紹了Go語言實(shí)現(xiàn)廣播式并發(fā)聊天服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Go+Redis實(shí)現(xiàn)延遲隊(duì)列實(shí)操
這篇文章主要介紹了Go+Redis實(shí)現(xiàn)延遲隊(duì)列實(shí)操,延遲隊(duì)列是一種非常使用的數(shù)據(jù)結(jié)構(gòu),我們經(jīng)常有需要延遲推送處理消息的場景,比如延遲60秒發(fā)送短信,延遲30分鐘關(guān)閉訂單,消息消費(fèi)失敗延遲重試等2022-09-09
Go語言切片前或中間插入項(xiàng)與內(nèi)置copy()函數(shù)詳解
這篇文章主要介紹了Go語言切片前或中間插入項(xiàng)與內(nèi)置copy()函數(shù)詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
golang使用bcrypt包對密碼進(jìn)行加密的方法實(shí)現(xiàn)
本文主要介紹了golang使用bcrypt包對密碼進(jìn)行加密的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

