Beego脱坑(十三)ORM基本增删改查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Beego脱坑(十三)ORM基本增删改查相关的知识,希望对你有一定的参考价值。
参考技术A title: Beego脱坑(十三)ORM基本增删改查tags: go,beego,orm
author : Clown95
本章我们将来了解如何使用ORM进行最基础的增删改查。为了减少篇幅,我们重新创建 Student 表,如果你不清楚怎么创建表可以查看文章
Beego脱坑(十二)ORM介绍并创建第一个表 。
Student具体结构如下:
我们先创建表单页面 ormdemo.html ,效果如下:
首先我们实现插入数据:
注册路由:
接下来我们插入几组数据
使用图形工具查询,可以看到全部成功插入
接下来我们实现通过StuId 来查询数据
注册路由:
我们查询学号为1 的数据,成功得到内容
接下来我们实现数据的更新,数据更新跟插入大同小异,唯一的区别就是:插入调用的是 Insert ,而更新数据使用的是 Update 。
注册路由:
我们在之前插入数据的时候,插入了两个名字为小白的数据, 现在我们需要把 StuId=1 的数据改成:
修改完毕后,我们查看表检测是否成功:
最后我们将实现数据删除:
注册路由:
我们来删除 StuId=3 的数据, 通过图形管理界面可以看到,成功删除。
beego增删改查代码实现
记录下使用beego的增删改查实现,数据库使用mysql,完整代码如下:
package main import ( _ "crud_beego/routers" //自动注册路由 "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) const ( DRIVER_NAME = "mysql" DATA_SOURCE = "root:[email protected](127.0.0.1:3306)/test?charset=utf8&loc=Asia%2FShanghai" MAX_IDLE_CONN = 5 MAX_OPEN_CONN = 30 ) type User struct { Id int Name string Email string Age int isActive bool } func (u *User) TableName() string { return "t_user" } func registerDB() { orm.Debug = true orm.RegisterDataBase("default", DRIVER_NAME, DATA_SOURCE, MAX_IDLE_CONN, MAX_OPEN_CONN) orm.RegisterModel(new(User)) } func (this User) ToString() string { return fmt.Sprintf("Id:%d\tName:%s\tEmail:%s\tAge:%d\tisActive:%v", this.Id, this.Name, this.Email, this.Age, this.isActive) } func createUsers() { users := []User{ User{Name: "adadmin1", Email: "[email protected]", Age: 12}, User{Name: "adadmin1", Email: "[email protected]", Age: 12}, User{Name: "adadmin1", Email: "[email protected]", Age: 12}, User{Name: "adadmin1", Email: "[email protected]", Age: 12}, User{Name: "adadmin1", Email: "[email protected]", Age: 12}, User{Name: "adadmin1", Email: "[email protected]", Age: 12}, User{Name: "adadmin1", Email: "[email protected]", Age: 12}, } o := orm.NewOrm() if successNums, err := o.InsertMulti(len(users), users); err != nil { fmt.Println("insert fail.....") } else { fmt.Println("success inserted %d datas", successNums) } } //find all users func listUsers() { var users []User orm.NewOrm().QueryTable("t_user").All(&users) for _, user := range users { fmt.Println(user.ToString()) } } //get user count func countUser() { cnt, _ := orm.NewOrm().QueryTable("t_user").Count() fmt.Println("All user count:", cnt) } //get the only one user func getUser() { var user User err := orm.NewOrm().QueryTable("t_user").Filter("Id", 5).One(&user) if err == nil { fmt.Println(user.ToString()) } } //get the only one user func getUsers() { var users []User _, err := orm.NewOrm().QueryTable("t_user").Filter("name__contains", "awd").All(&users) if err == nil { for _, user := range users { fmt.Println(user.ToString()) } } } //get limit user func limitUser() { var users []User _, err := orm.NewOrm().QueryTable("t_user").Limit(6).OrderBy("-Name").All(&users) if err == nil { for _, user := range users { fmt.Println(user.ToString()) } } } //get user limit,offset func limitoffsetUser() { var users []User _, err := orm.NewOrm().QueryTable("t_user").Limit(1, 4).OrderBy("Id").All(&users) if err == nil { for _, user := range users { fmt.Println(user.ToString()) } } } //del user func delUser() { num, err := orm.NewOrm().QueryTable("t_user").Filter("Id", "5").Delete() fmt.Printf("Affected Num: %s, %s", num, err) } //update user func updateUser() { num, err := orm.NewOrm().QueryTable("t_user").Filter("name__contains", "awd").Update(orm.Params{ "name": "#########", }) fmt.Printf("Affected Num: %s, %s", num, err) } func main() { registerDB() createUsers() listUsers() countUser() getUser() getUsers() limitoffsetUser() delUser() updateUser() beego.Run() }
以上是关于Beego脱坑(十三)ORM基本增删改查的主要内容,如果未能解决你的问题,请参考以下文章