MySql-gorm 標籤的使用和 自動維護表結構的設計

前言:
以下標記和使用方法經過測試可用
使用自動遷移+標記修改索引名或者刪除索引是不會成功的
uniqueIndex可以指定索引名unique不可以指定索引名預設為欄位名,兩者都是唯一索引,,index可以指定索引名
可以使用自動遷移+標記給已存在的欄位新增index索引
不可以使用自動遷移+標記給已存在的欄位新增unique或者uniqueIndex
可以使用自動遷移+標記給不存在的(新建)欄位新增Unique,index索引 但是不能新增uniqueIndex索引
uniqueIndex也不能在表不存在的情況下自動遷移的時候透過標記建立

1
2
3
4
    Name string `gorm:」index:idx_name」`  
    //改為
    Name string `gorm:」index:idx_name1」`  
    //不成功
1
想要實現如上需求,可以使用jinzhu gorm的addUniqueindex方法和removeIndex方法先刪除再新增索引

一、結構體標籤規則:
1、在結構體後 新增gorm:」」 在」」內新增標籤內容即可
2、多個標籤新增 : 在」」內使用;號進行隔開即可新增多個標記如:

1
 `gorm:"type:varchar(20);not null;comment:'這是一個說明'" josn:"test"`

二、標籤總結
1、PRIMARY_KEY

1
2
3
//使用方法
 `gore:」primary_key」`  
//效果:將改列設定為主鍵

2、Column

1
2
3
//使用方法 
`gorm:」column:name」`           
//效果:資料庫列名指定為name  特別說明:當修改結構體中column的名字時,如果修改的列資料庫中沒有,呼叫遷移的時候將建立新列

3、Type

1
2
3
//使用方法  
`gorm:」type:varchar(20)」`      
//效果:將對應資料中的列型別改為type標籤指定的型別

4、Default

1
2
3
4
//使用方法。
`gorm:"default:』測試『`
`gorm:"default:0"`  
//效果將欄位的預設值改為。測試/0

5、NOT NULL.

1
2
3
//使用方法
`gorm:」not null」`          
//效果 將欄位設定為不能為空

6、index

1
2
Name  int    `gorm:"index:idx_name"`
//效果:為name欄位建立 名為idx_name的索引

7、uniqueIndex
注意:貌似沒什麼用測試沒有成功建立,表第一次建立也沒有成功不知道是不是我資料庫問題

1
2
3
4
5
6
7
//注意衹有在表不存在的時候建表時生效
Name  int    `gorm:"uniqueIndex:idx_unq_name"`
//為Name欄位建立名為idx_unq_name的唯一索引,

Name1  int    `gorm:"uniqueIndex:unq_name"`
Name2  int    `gorm:"uniqueIndex:unq_name"`
為欄位Name1 Name2建立聯合唯一索引

8、unique

1
2
Test4             string `gorm:"unique"`
//給test4 新增跟test4名字一樣的索引

9、Size

1
2
Name     string `gorm:"Size:20"`
//欄位Name的長度設定為20

10、Comment

1
2
Name  int    `gorm:"comment:'這是一個說明'"`
//為欄位name 新增說明

autoCreateTime/autoUpdateTime
資料建立時候有用,nano納秒,milli毫秒
其他不常用的參考gorm官方檔案模型定義

1
2
3
T1                time.Time `gorm:"autoCreateTime:nano"`
    T2                time.Time `gorm:"autoUpdateTime:milli"`
    T3                time.Time `gorm:"autoCreateTime"`