標籤:drive driver HERE 技術 height cache 函數 mit 命令
使用 golang 操作資料庫的同學都會遇到一個問題 —— 根據資料表結構建立對應的 struct 模型。因為 golang 的使用首字母控制可見範圍,我們經常要設計 struct 欄位名和資料庫欄位名的對應關係。久而久之,這是一個非常繁瑣的過程。事情變得繁瑣了,我們都會想,有沒有好的辦法自動產生 model 呢?今天,記錄一種自動產生代碼的方法 —— xorm 工具。
關於 xorm
xorm是一個簡單而強大的Go語言ORM庫. 通過它可以使資料庫操作非常簡便。我在項目中經常使用,它的特性如下、
- 支援Struct和資料庫表之間的靈活映射,並支援自動同步表結構
- 事務支援
- 支援原始SQL語句和ORM操作的混合執行
- 使用連寫來簡化調用
- 支援使用Id, In, Where, Limit, Join, Having, Table, Sql, Cols等函數和結構體等方式作為條件
- 支援級聯載入Struct
- 支援LRU緩衝(支援memory, memcache, leveldb, redis緩衝Store) 和 Redis緩衝
- 支援反轉,即根據資料庫自動產生xorm的結構體
- 支援事件
- 支援created, updated, deleted和version記錄版本(即樂觀鎖)
xorm 工具
xorm 是一組資料庫操作命令的工具,包含如下命令:
- reverse 反轉一個資料庫結構,產生代碼
- shell 通用的資料庫操作用戶端,可對資料庫結構和資料操作
- dump Dump資料庫中所有結構和資料到標準輸出
- source 從標註輸入中執行SQL檔案
- driver 列出所有支援的資料庫驅動
那我們該如何使用 reverse 命令根據資料表結構產生 go 代碼呢?
go get github.com/go-xorm/cmd/xormgo get github.com/go-xorm/xorm
到GOPATH\src\github.com\go-xorm\cmd\xorm 目錄下,執行
go build
這時在此目錄了下產生xorm.exe檔案
接下來開始執行
./xorm reverse mysql root:[email protected]?charset=utf8 templates/goxorm
接下來在目前的目錄models中產生以下檔案:
Golang xorm工具,根據資料庫自動產生 go 代碼