models
nav.go
package models type Nav struct { Id int `json:"id"` Title string `json:"title"` Url string `json:"url"` Status int `json:"status"` Sort int `json:"sort"` } func (n Nav) TableName() string { return "nav" }
controllers
nav.go
package controllers import ( "beegogorm/models" "github.com/astaxie/beego" ) type NavController struct { beego.Controller } func (c *NavController) Get() { // 查詢全部數據 nav := []models.Nav{} // nav實例,查詢的數據是集合 models.DB.Find(&nav) // &nav 把查到的數據賦值給nav // 查詢一條數據 nav := models.Nav{Id: 3} // 獲取Id等於3的數據 models.DB.Find(&nav) /* 1、Where條件 = < > <= >= != IS NOT NULL IS NULL BETWEEN AND NOT BETWEEN AND IN OR AND NOT LIKE */ // 查詢id大於3的數據 nav := []models.Nav{} models.DB.Where("id<3").Find(&nav) // 查詢id大於5的數據 var n = 5 nav := []models.Nav{} models.DB.Where("id>?", n).Find(&nav) // 動態的數據使用占位符 var n1 = 3 var n2 = 9 nav := []models.Nav{} models.DB.Where("id > ? AND id < ?", n1, n2).Find(&nav) // 查詢id等於3 5 6的數據 nav := []models.Nav{} models.DB.Where("id in (?)", []int{3, 5, 6}).Find(&nav) // 查詢標題有 會 的數據 nav := []models.Nav{} models.DB.Where("title like ?", "%會%").Find(&nav) // 查詢id在什么之間 nav := []models.Nav{} models.DB.Where("id between ? and ?", 3, 6).Find(&nav) /* 2、Or 條件 */ nav := []models.Nav{} models.DB.Where("id=? OR id=?", 2, 3).Find(&nav) // 另一種寫法 nav := []models.Nav{} models.DB.Where("id=?", 2).Or("id=?", 3).Or("id=4").Find(&nav) /* 3、選擇字段查詢 */ nav := []models.Nav{} models.DB.Select("id, title, url").Find(&nav) /* 4、SubQuery 子查詢 models.DB.Table("user").Select("avg(age)").SubQuery() */ user := []models.User{} // 先查出平均年齡 models.DB.Table("user").Select("avg(age)").SubQuery() // 在當做參數傳給問號 // 在Find一下 models.DB.Where("age<?", models.DB.Table("user").Select("avg(age)").SubQuery()).Find(&user) c.Data["json"] = user c.ServeJSON() /* 5、排序 Limit 、Offset */ nav := []models.Nav{} // id Asc 按照id進行升序排序 // desc 降序 models.DB.Where("id>2").Order("id Asc").Find(&nav) nav := []models.Nav{} models.DB.Where("id>2").Order("sort Desc").Order("id Asc").Find(&nav) // 只要前面兩條 nav := []models.Nav{} models.DB.Where("id>1").Limit(2).Find(&nav) // 跳過2條查詢2條 nav := []models.Nav{} models.DB.Where("id>1").Offset(2).Limit(2).Find(&nav) /* 6、總數 */ // 分頁時用到 nav := []models.Nav{} var num int models.DB.Where("id > ?", 2).Find(&nav).Count(&num) c.Data["json"] = num c.ServeJSON() // 上面每一個nav,都需要封裝和返回,只寫一個在這 c.Data["json"] = nav // 封裝json c.ServeJSON() // 返回json }