Object Relational Mapping
,簡稱ORM,用於實現物件導向程式語言裡不通型別系統的資料之間的轉換。從效果上說,它其實是建立了一個可在程式語言裡使用的“虛擬物件資料庫”。beego
是謝大神開發的一個快速開發Go應用的Http框架,一個RESTful的框架。
記錄下如何在beego中配置資料庫,以MySql
為例
資料庫選擇
目前beego的ORM支援三種資料庫:
1.Sqlite
2.PostgreSql
3.MySql
如果要使用其中的資料庫必須要把對應的drive
(go語言對於的資料庫引擎)加入到import中:
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
)
資料庫註冊
orm.RegisterDriver(“mysql”, orm.DRMySQL)
這句話的意思是註冊了mysql的資料庫,當然我們要import進來對於的ORM包:
import(
"github.com/astaxie/beego/orm"
)
第一個引數是driverName,第二個引數是orm的型別對於三種資料庫:
orm.DRMySQL
orm.DRSqlite
orm.DRPostgres
資料庫連線
beego必須註冊一個別名為default
的資料庫,作為預設使用。
orm.RegisterDataBase(“default”, “mysql”, “test:123456@/test?charset=utf8”,30,30)
第一個引數是資料庫的別名,用來切換資料庫使用。
第二個是driverName
,在RegisterDriver時註冊的
第三是資料庫連線字串:test:123456@/test?charset=utf8
相對於使用者名稱:密碼@資料庫地址+名稱?字符集
第四個引數相當於:
orm.SetMaxIdleConns(“default”, 30)
設定資料庫的最大空閒連線。
第五個引數相當於:
orm.SetMaxOpenConns(“default”, 30)
設定資料庫的最大資料庫連線。
第四個引數和第五個引數也可以不傳值,會使用資料庫預設值:
時區
曾經我遇到過一個專案,資料庫的時區設定的ORM的時區不一致,導致後面的開發會複雜很多。beego中會使用DefaultTimeLoc
來保證時間不會出錯
beego預設使用time.Local
本地時區,可以用來自動建立時間,從資料中取出時間轉換。
orm.DefaultTimeLoc = time.UTC
可以設定預設的時區。
在進行RegisterDataBase的時候,會獲取資料庫使用的時區,做響應的轉換,匹配時間,從而保證時間不會出錯。
在使用的過程中可以考慮使用unix時間戳
表示時間欄位,好處是整形好排序,時區的轉換也比較容易。