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基本增删改查的主要内容,如果未能解决你的问题,请参考以下文章

beego增删改查代码实现

Django ORM 数据库增删改查

django配置模型增删改查

MySQL基本操作--库表增删改查

Django ORM基本的增删改查

MySQL-增删改查简易操作