package main
import (
    "fmt"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)
type User struct {
    Id         int `orm:"auto"`
    Name       string
    Profile_id int
}
func init() {
    orm.RegisterModel(new(User))
    orm.RegisterDataBase("default", "mysql", "ta3:ta3@/ta3?charset=utf8")
    orm.RunSyncdb("default", false, true)
}
func main() {
    var (
        sSql string
        err  error
    )
    var users []User
    orm.Debug = true //打开查询日志
    o := orm.NewOrm()
    o.Using("default") // 默认使用 default,你可以指定为其他数据库
    //查询 以于大数据量不知道性能怎样?
    sSql = "SELECT Id, Name FROM User "
    num, err := o.Raw(sSql).QueryRows(&users)
    if err == nil && num > 0 {
        for i, _ := range users {
            fmt.Println(users[i].Name)
        }
    }
    //执行更新
    sSql = "update User set name='aaa' where Id= 1"
    _, err = o.Raw(sSql).Exec()
    if err != nil {
        fmt.Println("更新出错")
    }
    //事务
    err = o.Begin()
    sSql = " insert into User (Id, Name, Profile_id) values(3, 'bbbb',9) "
    _, err = o.Raw(sSql).Exec()
    if err != nil {
        o.Rollback()
    } else {
        o.Commit()
    }
    //以下这种用法可以适应全部的SQL写法
    sSql = fmt.Sprintf("insert into User (Id, Name, Profile_id) values(4, 'bbbb',%d)", 10)
    _, err = o.Raw(sSql).Exec()
    if err != nil {
        fmt.Println("插入出错")
    }
}
 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐