xorm根據資料庫表生成對應的結構體

2021-08-13 19:21:03 字數 2254 閱讀 5888

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