分享
  1. 首页
  2. 文章

golang beego crud

悦亮工作室 · · 4457 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本例子介绍下面这些函数的使用方法。

type QuerySeter interface {
  Filter(string, ...interface{}) QuerySeter
  Exclude(string, ...interface{}) QuerySeter
  Limit(interface{}, ...interface{}) QuerySeter
  OrderBy(...string) QuerySeter
  Count() (int64, error)
  Exist() bool
  All(interface{}, ...string) (int64, error)
  One(interface{}, ...string) error
  ...
}
package main
import (
  "fmt"
  "github.com/astaxie/beego/orm"
  _ "github.com/go-sql-driver/mysql"
)
const (
  DRIVER_NAME  = "mysql"
  DATA_SOURCE  = "root:root@tcp(localhost:3306)/test?charset=utf8&loc=Asia%2FShanghai"
  MAX_IDLE_CONN = 5
  MAX_OPEN_CONN = 30
)
type User struct {
  Id    int
  Name   string `orm:"size(20)"`
  Email  string `orm:"size(50)"`
  Age   int
  IsActive bool
}
func (this User) ToString() string {
  return fmt.Sprintf("Name:%s\tEmail:%s\tAge:%d\tIsActive:%v", this.Name, this.Email, this.Age, this.IsActive)
}
func createUsers() {
  users := []User{
    User{Name: "jemy", Email: "jemy@golanghome.com", Age: 25},
    User{Name: "john", Email: "john@golanghome.com", Age: 24},
    User{Name: "amy", Email: "amy@golanghome.com", Age: 22},
    User{Name: "steven", Email: "steven@golanghome.com", Age: 26},
    User{Name: "dolphin", Email: "dolphin@golanghome.com", Age: 21},
    User{Name: "alex", Email: "alex@golanghome.com", Age: 32},
    User{Name: "bob", Email: "bob@golanghome.com", Age: 25},
    User{Name: "thomas", Email: "thomas@golanghome.com", Age: 25},
    User{Name: "chris", Email: "chris@golanghome.com", Age: 38},
    User{Name: "peter", Email: "peter@golanghome.com", Age: 40},
  }
  if num, err := orm.NewOrm().InsertMulti(len(users), users); err != nil {
    fmt.Println(err)
  } else {
    fmt.Printf("Insert %d users' data!\r\n", num)
  }
}
func queryUsers() {
  //find all users
  var users []User
  cnt, _ := orm.NewOrm().QueryTable("user").All(&users)
  for _, user := range users {
    fmt.Println(user.ToString())
  }
  fmt.Println()
  //only get the user count
  cnt, _ = orm.NewOrm().QueryTable("user").Count()
  fmt.Println("All user count:", cnt)
  fmt.Println()
  //get jemy
  var user User
  err := orm.NewOrm().QueryTable("user").Filter("Name", "jemy").One(&user)
  if err == nil {
    fmt.Println(user.ToString())
  }
  fmt.Println()
  //multiple condition
  err = orm.NewOrm().QueryTable("user").Filter("Name", "jemy").Filter("Age", 25).One(&user)
  if err == nil {
    fmt.Println(user.ToString())
  }
  fmt.Println()
  //get age larger than 25
  cnt, err = orm.NewOrm().QueryTable("user").Filter("Age__gt", 25).All(&users)
  if err == nil {
    fmt.Printf("There are %d person whose age are larger than %d\r\n", cnt, 25)
    for _, user := range users {
      fmt.Println(user.ToString())
    }
  }
  fmt.Println()
  //get age not equal to 25
  cnt, err = orm.NewOrm().QueryTable("user").Exclude("Age", 25).All(&users)
  if err == nil {
    fmt.Printf("There are %d person whose age is not %d\r\n", cnt, 25)
    for _, user := range users {
      fmt.Println(user.ToString())
    }
  }
  fmt.Println()
  //get age not equal to 25 and not john
  cnt, err = orm.NewOrm().QueryTable("user").Exclude("Age", 25).Exclude("Name", "john").All(&users)
  if err == nil {
    fmt.Printf("There are %d person exclude %s whose age is not %d\r\n", cnt, "john", 25)
    for _, user := range users {
      fmt.Println(user.ToString())
    }
  }
  fmt.Println()
  //check user exists
  exists := orm.NewOrm().QueryTable("user").Filter("Name", "alex").Exist()
  fmt.Println("Alex Exists?", exists)
  fmt.Println()
  //get all user order by age
  cnt, err = orm.NewOrm().QueryTable("user").OrderBy("-Age").All(&users)
  if err == nil {
    for _, user := range users {
      fmt.Println(user.ToString())
    }
  }
  fmt.Println()
  //get user limit
  cnt, err = orm.NewOrm().QueryTable("user").Limit(6).OrderBy("-Name").All(&users)
  if err == nil {
    for _, user := range users {
      fmt.Println(user.ToString())
    }
  }
  fmt.Println()
  //get user limit,offset
  cnt, err = orm.NewOrm().QueryTable("user").Limit(6, 4).OrderBy("-Name").All(&users)
  if err == nil {
    for _, user := range users {
      fmt.Println(user.ToString())
    }
  }
  fmt.Println()
}
func registerDB() {
  orm.Debug = true
  orm.RegisterDataBase("default", DRIVER_NAME, DATA_SOURCE, MAX_IDLE_CONN, MAX_OPEN_CONN)
  orm.RegisterModel(new(User))
  orm.RunCommand()
}
func main() {
  registerDB()
  //createUsers()
  queryUsers()
}



有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:悦亮工作室

查看原文:golang beego crud

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
4457 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏