zoukankan      html  css  js  c++  java
  • golang学习之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:123456@tcp(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	Name:%s	Email:%s	Age:%d	isActive:%v", this.Id, this.Name, this.Email, this.Age, this.isActive)
    }
    
    func createUsers() {
        users := []User{
            User{Name: "adadmin1", Email: "14199@111.com", Age: 12},
            User{Name: "adadmin1", Email: "14199@111.com", Age: 12},
            User{Name: "adadmin1", Email: "14199@111.com", Age: 12},
            User{Name: "adadmin1", Email: "14199@111.com", Age: 12},
            User{Name: "adadmin1", Email: "14199@111.com", Age: 12},
            User{Name: "adadmin1", Email: "14199@111.com", Age: 12},
            User{Name: "adadmin1", Email: "14199@111.com", 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()
    }
  • 相关阅读:
    thread_Semaphore信号量
    c 语言文本文件判断是否到达结尾的问题
    c语言快速排序算法(转)
    c语言双向循环链表
    gtk+学习笔记(八)
    c语言循环链表的问题
    linux c获取本地时间
    gtk+学习笔记(七)
    gtk+学习笔记(六)
    gtk+学习笔记(五)
  • 原文地址:https://www.cnblogs.com/vipzhou/p/5559797.html
Copyright © 2011-2022 走看看