博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang beego crud
阅读量:6162 次
发布时间:2019-06-21

本文共 4662 字,大约阅读时间需要 15 分钟。

hot3.png

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

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

转载于:https://my.oschina.net/maliang9527/blog/420572

你可能感兴趣的文章
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
深入python的set和dict
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>