分享
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()
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信4457 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
本例子介绍下面这些函数的使用方法。
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()
}