### 使用Table和Tag改變名稱映射
如果所有的命名都是按照IMapper的映射來操作的,那當然是最理想的。但是如果碰到某個表名或者某個字段名跟映射規則不匹配時,我們就需要別的機制來改變。xorm提供了如下幾種方式來進行:
-
如果結構體擁有`TableName() string`的成員方法,那么此方法的返回值即是該結構體對應的數據庫表名。
-
通過`engine.Table()`方法可以改變struct對應的數據庫表的名稱,通過sturct中field對應的Tag中使用`xorm:"'column_name'"`可以使該field對應的Column名稱為指定名稱。這里使用兩個單引號將Column名稱括起來是為了防止名稱沖突,因為我們在Tag中還可以對這個Column進行更多的定義。如果名稱不沖突的情況,單引號也可以不使用。
到此名稱映射的所有方法都給出了,一共三種方式,這三種是有優先級順序的。
-
表名的優先級順序如下:
- `engine.Table()` 指定的臨時表名優先級最高
- `TableName() string` 其次
- `Mapper` 自動映射的表名優先級最后
-
字段名的優先級順序如下:
- 結構體tag指定的字段名優先級較高
- `Mapper` 自動映射的表名優先級較低