Beego orm 库进行 ORM 开发

一 点睛

beego orm是一个Go 进行 ORM 操作的库,它采用了 Go style 方式对数据库进行操作,实现了 struct 到数据表记录的映射。beego orm 是一个十分轻量级的 Go ORM 框架,这个库的本意是降低复杂的 ORM 学习曲线,尽可能在 ORM 的运行效率和功能之间寻求一个平衡,beego orm 是目前开源的 Go ORM 框架中实现比较完整的一个库,而且运行效率相当不错,功能也基本能满足需求。

beego orm 是支持 database/sq l标准接口的 ORM 库,所以理论上来说,只要数据库驱动支持 database/sq l接口,就可以无缝的接入 beego orm。

二 支持的驱动包

三 暂未支持的驱动包

四 安装

beego orm 支持 go get 方式安装,是完全按照 Go Style 的方式来实现的。

go get github.com/astaxie/beego

五 mysql 数据库初始化

需要 import 相应的数据库驱动包、database/sql 标准接口包以及 beego orm 包。

import (
    "database/sql"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

func init() {
    // 注册驱动
    orm.RegisterDriver("mysql", orm.DRMySQL)
    // 设置默认数据库
    orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)
    // 注册定义的 model
    orm.RegisterModel(new(User))
    // 创建table
    orm.RunSyncdb("default", false, true)
}

六 实战

1 代码

package main

import (
   "fmt"
   "github.com/astaxie/beego/orm"
   _ "github.com/mysql-go"
)

// 模型
type User struct {
   Id   int
   Name string `orm:"size(100)"`
}

func init() {
   // 设置默认数据库
   orm.RegisterDataBase("default", "mysql", "root:Mima123456@/test?charset=utf8", 30)
   // 注册定义的 model
   orm.RegisterModel(new(User))
   // RegisterModel 也可以同时注册多个 model
   // orm.RegisterModel(new(User), new(Profile), new(Post))
   // 创建 table
   orm.RunSyncdb("default", false, true)
}

func main() {
   o := orm.NewOrm()
   user := User{Name: "slene"}

   // 插入表
   id, err := o.Insert(&user)
   fmt.Printf("ID: %d, ERR: %v\n", id, err)

   // 更新表
   user.Name = "astaxie"
   num, err := o.Update(&user)
   fmt.Printf("NUM: %d, ERR: %v\n", num, err)

   // 读取表
   u := User{Id: user.Id}
   err = o.Read(&u)
   fmt.Printf("ERR: %v\n", err)

   // 删除表
   num, err = o.Delete(&u)
   fmt.Printf("NUM: %d, ERR: %v\n", num, err)
}

2 测试

create table `user`
    -- --------------------------------------------------
    --  Table Structure for `main.User`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `user` (
        `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
        `name` varchar(100) NOT NULL DEFAULT ''
    ) ENGINE=InnoDB;

ID: 1, ERR: <nil>
NUM: 1, ERR: <nil>
ERR: <nil>
NUM: 1, ERR: <nil>

并且在数据库中,自动生成数据表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

七 参考

https://gitee.com/cakin24/build-web-application-with-golang/blob/master/zh/05.5.md

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值