Beego脫坑(十一) ORM之建立表

2021-09-20 07:10:25 字數 3365 閱讀 6085

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...