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\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: "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()
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏成长道路

OneHotEncoder介绍单属性多属性scala实现

       因为项目的需要,将数据库中表的属性向量化,然后进行机器学习,所以去spark官网学习了一下OneHotEncoder,官网的相关介绍比较少,主要是...

2250
来自专栏一个会写诗的程序员的博客

ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class

ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor a...

855
来自专栏xingoo, 一个梦想做发明家的程序员

【设计模式】——抽象工厂Abstract Factory

模式意图   提供对象的使用接口,隐藏对象的创建过程。 模式结构 ? AbstractFactory 提供创建对象的接口。 ConcreteFactory 提...

1735
来自专栏运维一切

apache正向代理配置 原

883
来自专栏高性能分布式系统设计

Clojure 启动出错

X:\clojure-1.3.0>java -cp clojure.jar main Exception in thread "main" java.lang....

3236
来自专栏别先生

Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout

1:初次运行Strom程序出现如下所示的错误,贴一下,方便脑补,也希望帮助到看到的小伙伴: 错误如下所示,主要问题是刚开始使用maven获取jar包的时候需要写...

3208
来自专栏俞其荣的博客

Android Architecture Component之ViewModel解析ViewModelViewModelProvidersFactoryNewInstanceFactoryAndroi

基于 android.arch.lifecycle:extensions:1.1.1

1222
来自专栏xingoo, 一个梦想做发明家的程序员

Spark MLlib特征处理 之 StringIndexer、IndexToString使用说明以及源码剖析

StringIndexer可以把字符串的列按照出现频率进行排序,出现次数最高的对应的Index为0。比如下面的列表进行StringIndexer

830
来自专栏IT笔记

JAR版本升级你所遇到的坑!!!

JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包。 然而,这家伙在2010年出了一个...

3176
来自专栏Python、Flask、Django

redis 读取数据,并且对里面的时间进行排序读取。[第N次优化]

892

扫码关注云+社区