beego orm 是乙個強大的 go 語言 orm 框架.
已支援資料庫驅動:
當我們使用orm運算元據庫時,必須要匯入資料庫驅動,如mysql
)orm 特性:
支援 go 的所有型別儲存
輕鬆上手,採用簡單的 crud 風格
自動 join 關聯表
跨資料庫相容查詢
允許直接使用 sql 查詢/對映
嚴格完整的測試保證 orm 的穩定與健壯
我們定義結構體作為表,必須要有主鍵。
當 field 型別為 int, int32, int64, uint, uint32, uint64 時,可以設定欄位為自增健。
當模型定義裡沒有主鍵時,符合上述型別且名稱為 id 的 field 將被視為自增健。
為了避免踩坑,屬性的首字母仍然需要大寫。
user.go (**應該放入models目錄下)
type users struct
/*//我們也可以使用tag對屬性進行詳細的設定
type users struct
*///初始化
func
init()
registerdatabase說明
orm.
registerdatabase
("default"
,"mysql"
,"root:root@/orm_test?charset=utf8"
, maxidle, maxconn)
// 引數1 資料庫的別名,用來在 orm 中切換資料庫使用
// 引數2 資料庫驅
// 引數3 對應的連線字串
// 引數4(可選) 設定最大空閒連線
// 引數5(可選) 設定最大資料庫連線 (go >= 1.2)
當我們執行專案是,cmd會出現下面的內容
create table `users`
----
----
----
----
----
----
----
----
----
----
----
----
----
-- table structure for
`hello/models.users`
----
----
----
----
----
----
----
----
----
----
----
----
----
create table if not exists `users`
(`id` integer auto_increment not null primary key,
`name`
varchar
(255
) not null default ''
,`pwd`
varchar
(255
) not null default ''
,`age` integer not null default 0
,`***`
varchar
(255
) not null default ''
) engine=myisam;
忽略字段
設定 - 即可忽略 struct 中的字段
anyfield string
`orm:"-"`
auto
當 field 型別為 int
,int32
,int64
,uint
,uint32
,uint64 時,可以設定欄位為自增健
當模型定義裡沒有主鍵時,符合上述型別且名稱為 id 的 field 將被視為自增健。 pk
設定為主鍵,適用於自定義其他型別為主鍵
null
資料庫表預設為 not null,設定 null 代表 allow null
name string
`orm:"null"
index
為單個字段增加索引
unique
為單個字段增加 unique 鍵
name string `orm:
"unique"`
column
為字段設定 db 欄位的名稱
name string `orm:
"column(user_name)"`
size
string 型別字段預設為 varchar(255)
設定 size 以後,db type 將使用 varchar(size)
title string `orm:
"size(60)"`
digits / decimals
設定 float32, float64 型別的浮點精度
money float64 `orm:
"digits(12);decimals(4)"
`總長度 12 小數點後 4 位 eg: 99999999.9999
auto_now / auto_now_add
created time.time `orm:
"auto_now_add;type(datetime)"
`updated time.time `orm:
"auto_now;type(datetime)"
`auto_now 每次 model 儲存時都會對時間自動更新
auto_now_add 第一次儲存時才設定時間
對於批量的 update 此設定是不生效的
type
設定為 date 時,time.time 欄位的對應 db 型別使用 date
created time.time `orm:
"auto_now_add;type(date)"
`設定為 datetime 時,time.time 欄位的對應 db 型別使用 datetime
created time.time `orm:
"auto_now_add;type(datetime)"`
default
為字段設定預設值,型別必須符合(目前僅用於級聯刪除時的預設值)
status int `orm:
"default(1)"`
Beego脫坑(十四) ORM之原始SQL語
簡單演示insorm orm.neworm var user models.users insorm.raw select name from users where id 1 exec this.ctx.writestring user.name 介面說明 exec 執行 sql 語句,返回 sq...
beego框架之orm模組
1.安裝mysql驅動 2.建立模型對映,並使用結構體的tag標籤來將結構體的成員變數和表的字段做對映。在models模組裡,被註冊的結構體與資料庫裡的表會以一種預設方式進行一一對應。然而,在實際開發中,預設的這種對映關係並不是我們所期待的,所以我們需要指定被註冊的結構體與資料庫裡的表之間的關係。其...
beego框架之 orm模型
go語言web框架中 orm使用結構體來定義 beego orm type user struct 定義字段 定義型別 定義屬性 beego orm欄位的屬性引數 pk設定為主鍵,適用於自定義其他型別為主鍵 auto 當 field 型別為 int,int32,int64,uint,uint32,u...