成都网站建设设计

将想法与焦点和您一起共享

go语言orm框架,Go语言 web框架

ORM框架是什么

orm

创新互联建站专注于中大型企业的成都做网站、成都网站设计和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上千余家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!

-

即object/relation

mapping

详细说明参见:

大概地说,这类框架的是为了将类对象和关系建立映射,在应用程序和数据库的io之间建立一个中间层,在程序中只需要直接操作对象(数据库中对象的增删改查),而不用去关心数据库中表的列啊,关系啊什么的

举个例子:

以前一直自己一个人在家吃饭,需要自己去买米买菜,然后自己再做,做完了还得收拾,觉得好麻烦,但是也得做,没办法啊,苦逼的单身-

-

这也就相当于传统的操作关系(未使用orm);

而终于有一天,发现去饭馆吃饭很方便,不用操心买菜啊什么的,也不用操心吃完还得去收拾一大堆什么的,点好菜,吃好付钱走人就行了

-

什么做饭烧菜的事儿都有别人去做好,具体人家怎么做,就不用管了

-

-

这饭馆就相当于是一个orm的映射框架,为你处理那些烦琐的无聊的事,只把最重要的环节--吃饭--让你来做

而点菜就相当于你在做orm映射的配置,你告诉饭馆你要吃点啥,饭馆就根据你的需要去配菜准备,做好了就给你送上来!

如何使用go语言的beego框架的orm

models.go

============================

package main

import (

"github.com/astaxie/beego/orm"

)

type User struct {

Id int

Name string

Profile *Profile `orm:"rel(one)"` // OneToOne relation

}

type Profile struct {

Id int

Age int16

User *User `orm:"reverse(one)"` // 设置反向关系(可选)

}

func init() {

// 需要在init中注册定义的model

orm.RegisterModel(new(User), new(Profile))

}

main.go

==============

package main

import (

"fmt"

"github.com/astaxie/beego/orm"

_ "github.com/go-sql-driver/mysql"

)

func init() {

//orm.RegisterModel(new(User))

orm.RegisterDataBase("default", "mysql", "ta3:ta3@/ta3?charset=utf8")

orm.RunSyncdb("default", false, true) // true 改成false,如果表存在则会给出提示,如果改成false则不会提示 , 这句话没有会报主键不存在的错误

}

func main() {

o := orm.NewOrm()

o.Using("default") // 默认使用 default,你可以指定为其他数据库

user := User{Id: 1}

err := o.Read(user)

if err == orm.ErrNoRows {

fmt.Println("查询不到")

} else if err == orm.ErrMissPK {

fmt.Println("找不到主键")

} else {

fmt.Println(user.Id, user.Name)

}

}

执行结果:

create table `user`

-- --------------------------------------------------

-- Table Structure for `main.User`

-- --------------------------------------------------

CREATE TABLE IF NOT EXISTS `user` (

`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,

`name` varchar(255) NOT NULL,

`profile_id` integer NOT NULL UNIQUE

) ENGINE=InnoDB;

create table `profile`

-- --------------------------------------------------

-- Table Structure for `main.Profile`

-- --------------------------------------------------

CREATE TABLE IF NOT EXISTS `profile` (

`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,

`age` smallint NOT NULL

) ENGINE=InnoDB;

查询不到

第二次再执行:

table `user` already exists, skip

table `profile` already exists, skip

查询不到

如果 orm.RunSyncdb("default", false, true)改成 orm.RunSyncdb("default", false, false)

则执行结果不会提示。

什么是orm框架

ORM(ObjectRelationalMapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。

基本内容

ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有三种:Hibernate,iBATIS,EclipseLink。


名称栏目:go语言orm框架,Go语言 web框架
当前网址:http://chengdu.cdxwcx.cn/article/hoghjd.html