使用 golang 運算元據庫的同學都會遇到乙個問題 —— 根據資料表結構建立對應的 struct 模型。因為 golang 的使用首字母控制可見範圍,我們經常要設計 struct 欄位名和資料庫欄位名的對應關係。久而久之,這是乙個非常繁瑣的過程。事情變得繁瑣了,我們都會想,有沒有好的辦法自動生成 model 呢?今天,記錄一種自動生成**的方法 —— xorm 工具。
xorm是乙個簡單而強大的go語言orm庫. 通過它可以使資料庫操作非常簡便。我在專案中經常使用,它的特性如下:
xorm 是一組資料庫操作命令的工具,包含如下命令:
那我們該如何使用 reverse 命令根據資料表結構生成 go **呢?go get github.com/go-xorm/cmd/xorm
同時需要安裝對應的 driver :
go get github.com/go-sql-driver/mysql //安裝mysql驅動
//go get github.com/mattn/go-sqlite3 //sqlite
go get github.com/go-xorm/xorm
編譯cmd/xorm
會生成 xorm 工具, 假如環境變數。
這時候,執行xorm help reverse
能獲取幫助資訊如下:
usage: xorm reverse [-s] drivername datasourcename tmplpath [generatedpath] [tablefilterreg]
according database's tables and columns to generate codes for go, c++ and etc.
-s generated one go file for every table
drivername database driver name, now supported four: mysql mymysql sqlite3 postgres
datasourcename database connection uri, for detail infomation please visit driver's project page
tmplpath template dir for generated. the default templates dir has provide 1 template
generatedpath this parameter is
optional, if blank, the default value is model, then will
generated all codes in model dir
tablefilterreg table name filter regexp
可以知道,執行引數 -s 表示為每張表建立乙個單獨檔案。接下來的引數依次是:驅動,資料來源,模板目錄(在原始碼的/cmd/xorm/templates/goxorm
可根據需求定製),生成目錄,**過濾條件。
接下來我們以 mysql 為例介紹使用方法。
xorm reverse mysql name:password@(ip:port)/***?charset=utf8 /cmd/xorm/templates/goxorm [可選your project model path]
這裡輸出目錄引數省略,會在當前目錄建立乙個model
目錄,該目錄下就是自動生成的 go **,, 駝峰命名方式。具體內容如下:
package
model
type
testmodel struct
到這裡,就生成了我們想要的 model , 免去了手寫的繁瑣過程。
照例總結一波,引用看到過一句話:
如果乙個工具能讓我節省 1s 的時間,我願意花一天的時間去找或者開發這個工具!
golang 生成對應的資料表struct定義操作
在開發過程中,常常需要將資料庫表對應到golang的乙個struct,特別是使用一些orm工具,sqlx庫等,我是個懶人,即使資料表的字段不多,我也懶得去乙個個對應的敲入 更別提資料表字段比較多的情況了,碼農的www.cppcns.com時間,不能浪費在這啊,對吧?所以我在想,是不是有辦法可以自動生...
Django根據資料庫表反向生成Model
用過django的人應該都熟悉下面兩條命令 python manage.py make migrations 此時資料庫中還不會生效 既然有根據model自動生成資料庫表的命令,那麼肯定就有根據資料庫表反向生成model的命令 python manage.py inspectdb 使用這條命令,會根...
根據資料庫生成 sql insert 資料
create procedure dbo.uspoutputdata tablename sysname as declare column varchar 1000 declare columndata varchar 1000 declare sql varchar 4000 declare x...