使用 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/xorm go get github.com/go-xorm/xorm
到GOPATH\src\github.com\go-xorm\cmd\xorm 目錄下,執行
go build
這時在此目錄了下生成xorm.exe文件
接下來開始執行
./xorm reverse mysql root:password@test?charset=utf8 templates/goxorm
接下來在當前目錄models中生成以下文件: