xorm結構體對映規則和表操作

2021-10-07 17:37:23 字數 1489 閱讀 4749

上節內容我們學習了基本的xorm框架的知識和基礎配置的相關資訊。本節課內容我們繼續學習相關的知識和相關操作。

另外,可以設定表名和表字段分別為不同的對映規則:

我們在field對應的tag中對column的一些屬性進行定義,用於對我們的專案中的資料庫表字段進行設定和限定。定義的方法基本和我們寫sql定義表結構類似。如下所示:

type user struct
xorm中對資料型別有自己的定義,具體的tag規則如下,另tag中的關鍵字均不區分大小寫:

| name | 當前field對應的字段的名稱 | | --- | --- | --- | | pk | 是否是primary key | | name | 當前field對應的字段的名稱 | | pk | 是否是primary key | | autoincr | 是否是自增 | | [not ]null 或 notnull | 是否可以為空 | | unique | 是否是唯一 | | index | 是否是索引 | | extends | 應用於乙個匿名成員結構體或者非匿名成員結構體之上 

| - | 這個field將不進行字段對映 | | -> | field將只寫入到資料庫而不從資料庫讀取 | | <- | field將只從資料庫讀取,而不寫入到資料庫 | | created | field將在insert時自動賦值為當前時間 | | updated | field將在insert或update時自動賦值為當前時間 | |deleted | field將在delete時設定為當前時間,並且當前記錄不刪除 | | version | field將會在insert時預設為1,每次更新自動加1 | | default 0或default(0) | 設定預設值,緊跟的內容如果是varchar等需要加上單引號 | | json | 表示內容將先轉成json格式 |

除了上述表名的對映規則和使用tag對欄位進行設定以外,基礎的go語言結構體資料型別也會對應到資料庫表中的字段中,具體的一些資料型別對應規則如下:

| go語言資料型別 | xorm 中的型別 | | -------------| -------------| | implemented conversion | text | | int, int8, int16, int32, uint, uint8, uint16, uint32 | int | | int64, uint64 | bigint | | float32 | float | | float64 | double | | complex64, complex128 | varchar(64) | | uint8 | blob | | array, slice, map except uint8 | text | | bool | bool | | string | varchar(255) | | time.time | datetime | | cascade struct | bigint | | struct | text | | others | text |

查詢和統計主要使用get, find, count, rows, iterate這幾個方法,以及條件查詢where。

xorm之定義表結構體

xorm支援將乙個struct對映為資料庫中對應的一張表。var engine xorm.engine engine.tablename new 表結構體 true xorm reverse mssql server 192.168.133.133 database arguse user id s...

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

使用 golang 運算元據庫的同學都會遇到乙個問題 根據資料表結構建立對應的 struct 模型。因為 golang 的使用首字母控制可見範圍,我們經常要設計 struct 欄位名和資料庫欄位名的對應關係。久而久之,這是乙個非常繁瑣的過程。事情變得繁瑣了,我們都會想,有沒有好的辦法自動生成 mod...

結構體和鍊錶

1 簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別 而結構體是 陣列...