本例子介绍下面这些函数的使用方法。
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: "[email protected]", Age: 25}, User{Name: "john", Email: "[email protected]", Age: 24}, User{Name: "amy", Email: "[email protected]", Age: 22}, User{Name: "steven", Email: "[email protected]", Age: 26}, User{Name: "dolphin", Email: "[email protected]", Age: 21}, User{Name: "alex", Email: "[email protected]", Age: 32}, User{Name: "bob", Email: "[email protected]", Age: 25}, User{Name: "thomas", Email: "[email protected]", Age: 25}, User{Name: "chris", Email: "[email protected]", Age: 38}, User{Name: "peter", Email: "[email protected]", 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() }