beego ORM 对象基本操作

操作的四个方法 Read / Insert / Update / Delete
mysql数据库,设计表的结构
创建名为Person的数据库,创建user表,字段设计如下
mysql> create database Person CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> use Person

mysql> CREATE TABLE user(
    id int not null auto_increment,
    Name char(50),
    Pwd char(50),
    Email char(50),
    Sex char(50),
    Phone char(50),
    primary key (id)
    );
 
models 主要是负责数据库处理
# models目录下面 user.go
package models

import (
    "github.com/astaxie/beego/orm"
)

// 用户信息
// 默认情况对应数据库的表名为:user
type User struct {
    Id    int64
    Name    string
    Pwd    string
    Email    string
    Sex    string
    Phone    string
}

func init() {
    // 需要在init中注册定义的model
    // orm.RegisterModel(new(User), new(Post), new(Profile), new(Tag))
    orm.RegisterModel(new(User))
}

 
main.go 负责在运行时连接数据库根据模型创建数据库表

package main

import (
    "mysite/models"
    "fmt"
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"

)

func init() {
    mysqlhost := beego.AppConfig.String("mysqlhost")
    mysqlport := beego.AppConfig.String("mysqlport")
    mysqluser := beego.AppConfig.String("mysqluser")
    mysqlpass := beego.AppConfig.String("mysqlpass")
    mysqldb := beego.AppConfig.String("mysqldb")
    
    //注册mysql Driver
    orm.RegisterDriver("mysql", orm.DRMySQL)
    //注册数据库直接连接
    // orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8")
    
     //用户名:密码@tcp(url地址)/数据库 ,名字对应app.conf配置数据库信息
    conn := mysqluser + ":" + mysqlpass + "@tcp(" + mysqlhost + ":" + mysqlport + ")/" + mysqldb + "?charset=utf8"
    //注册数据库连接
    orm.RegisterDataBase("default", "mysql", conn)
 
    fmt.Printf("数据库连接成功!%s\n", conn)
}
func main() {
    // 插入数据
    o := orm.NewOrm()
    u := models.User{Name:"Victor", Pwd:"123qwee", Email:"qq@qq.com", Sex:"boy", Phone:"123123"}
    id, err := o.Insert(&u)
    fmt.Printf("ID: %d, ERR: %v\n", id, err)
        
    beego.Run()
    orm.Debug= true
    beego.Run()
}
 
Insert
func main() {

    orm.Debug= true
    // 插入数据
    o := orm.NewOrm()
    u := models.User{Name:"Victor", Pwd:"123qwee", Email:"qq@qq.com", Sex:"boy", Phone:"123123"}
    id, err := o.Insert(&u)
    fmt.Printf("ID: %d, ERR: %v\n", id, err)
        
    beego.Run()
}

 
Read
func main() {

    orm.Debug= true

    o := orm.NewOrm()
    // 读取数据
    user := models.User{Id: 4}
    err := o.Read(&user)
    if err != nil {
        fmt.Printf("ERR: %v\n", err)
    }else {
        fmt.Println(user.Id, user.Name, user.Email )
    }
    beego.Run()
}

 
ReadOrCreate
尝试从数据库读取,不存在的话就创建一个

默认必须传入一个参数作为条件字段,同时也支持多个参数多个条件字段

func main() {

    orm.Debug= true

    o := orm.NewOrm()
    // 尝试从数据库读取,不存在的话就创建一个
    user := models.User{Name:"AI", Pwd:"123qwee", Email:"qq@qq.com", Sex:"boy", Phone:"123123"}
    // 三个返回参数依次为:是否新创建的,对象 Id 值,错误
    if created, id, err := o.ReadOrCreate(&user, "Name"); err == nil {
        if created {
            fmt.Println("New Insert an object. Id:", id)
        } else {
            fmt.Println("Get an object. Id:", id)
        }
    }

    beego.Run()
}
 
InsertMulti
同时插入多个对象
类似sql语句
insert into table (name, age) values(“slene”, 28),(“astaxie”, 30),(“unknown”, 20)

func main() {
    orm.Debug= true
    o := orm.NewOrm()
    // 同时插入多个对象
    users := []models.User{
        {Name:"qwe", Pwd:"123qwee", Email:"qq@qq.com", Sex:"boy", Phone:"123123"},
        {Name:"asd", Pwd:"123qwee", Email:"qq@qq.com", Sex:"boy", Phone:"123123"},
    }
    // 第一个参数 bulk 为并列插入的数量,bulk 为 1 时,将会顺序插入 slice 中的数据
    successNums, err := o.InsertMulti(100, users)

    fmt.Printf("successNums: %d, ERR: %v\n", successNums, err)
    beego.Run()
}
 
Update
第一个返回值为影响的行数

func main() {
    orm.Debug= true
    o := orm.NewOrm()
    // Update 默认更新所有的字段,可以更新指定的字段
    user := models.User{Id: 4}
    user.Name = "my"
    num, err := o.Update(&user)
    // 只更新 Name
    // o.Update(&user, "Name")
    // 指定多个字段
    // o.Update(&user, "Field1", "Field2", ...)
    fmt.Printf("successNums: %d, ERR: %v\n", num, err)
    beego.Run()    
}
 
Delete
第一个返回值为影响的行数

func main() {
    orm.Debug= true
    o := orm.NewOrm()
    // Delete
    if num, err := o.Delete(&models.User{Id: 1}); err == nil {
        fmt.Println(num)
    }
    beego.Run()
}
--------------------- 
作者:断了的军刀 
来源:CSDN 
原文:https://blog.csdn.net/u011327801/article/details/90180942 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值