栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Beego orm 库进行 ORM 开发

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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。

二 支持的驱动包
  • Mysql: github/go-mysql-driver/mysql

  • PostgreSQL: github.com/lib/pq

  • SQLite: github.com/mattn/go-sqlite3

  • Mysql: github.com/ziutek/mymysql/godrv

三 暂未支持的驱动包
  • MsSql: github.com/denisenkom/go-mssqldb

  • MS ADODB: github.com/mattn/go-adodb

  • Oracle: github.com/mattn/go-oci8

  • ODBC: bitbucket.org/miquella/mgodbc

四 安装

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: %vn", id, err)

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

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

   // 删除表
   num, err = o.Delete(&u)
   fmt.Printf("NUM: %d, ERR: %vn", 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: 
NUM: 1, ERR: 
ERR: 
NUM: 1, ERR: 

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

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号