前篇已經建立了 user model,這篇來介紹 ORM 的操作。
因為之前用 bee 產生的 model 程式碼裡,已經有寫好的函式了,所以我們直接參考 models/user.go ,使用裏面的函式來操作。
新增得先建立 User 物件,然後傳入 AddUser() 裡,就可以新增了。
userNotAdded := models.User{Name: "John Doe", Birthday: time.Now(), Gender: "M"}
userid, err := models.AddUser(&userNotAdded)
if err != nil {
panic(err)
}
fmt.Println(userid)
查詢所有,可以用 GetAllUser()
query:
fields: 指定要查詢的欄位
sortby/order: 這兩個是一組的,sortby 是指定排序的欄位,order 是指定降冪(desc)、升冪(asc),sortby 有幾個元素,order 就要有幾個元素。
offset: 指定要略過的資料列數目
limit: 指定要取回的資料列數目
query := map[string]string{}
fields := []string{}
sortby := []string{}
order := []string{}
offset := 0
limit := -1
users, err := models.GetAllUser(query, fields, sortby, order, offset, limit)
if err != nil {
panic(err)
}
fmt.Println(users)
// 結果:[{1 John Doe M 2019-09-11 10:15:51 +0000 UTC}]
給定指定的 Id,就可以查到該筆。
user, err := models.GetUserById(1)
if err != nil {
panic(err)
}
fmt.Println(user)
// 結果:&{1 John Doe M 2019-09-11 10:15:51 +0000 UTC}
查詢單個之後,可以接著做修改。
// Update
user.Name = "Mary Jane"
user.Gender = "F"
err = models.UpdateUserById(user)
if err != nil {
panic(err)
}
// Retrieve again to verify
user, err = models.GetUserById(1)
if err != nil {
panic(err)
}
fmt.Println(user)
// 結果:&{2 Mary Jane F 2019-09-11 10:15:51 +0000 UTC}
給定 Id,可以直接刪除
// Delete
err := models.DeleteUser(1)
if err != nil {
panic(err)
}
如果未來有其他的需求,可以直接參考 models/user.go 內容來做新增或修改。如果還想要知道更多,可以再去參考網站上的文件 - BeeGo ORM。