文章目錄
- Java
- 實體類和數據庫的映射
- 1.默認駝峰命名規則
- 2.自定義字段映射
- 3.關閉駝峰命名規則
- 4.JSON序列化映射
- Golang
- 1. 結構體與表的映射
- 2. 字段與列的映射
- 3. 關聯關系映射
- 4. 其他映射相關標簽
這篇也是做數據庫映射方面的對比:
Java
實體類和數據庫的映射
1.默認駝峰命名規則
MyBatis-Plus默認會將數據庫表字段名(下劃線命名)映射到實體類屬性名(駝峰命名)。例如:
數據庫表字段名:user_name
實體類屬性名:userName
2.自定義字段映射
可以通過@TableField注解或XML映射文件手動指定字段名與屬性名的映射關系。
3.關閉駝峰命名規則
通過配置map-underscore-to-camel-case為false關閉默認的駝峰命名映射。
在application.yml中配置:
mybatis-plus:configuration:map-underscore-to-camel-case: false
在application.properties中配置:
mybatis-plus.configuration.map-underscore-to-camel-case=false
4.JSON序列化映射
結合@JsonProperty或@JSONField注解,可以將實體類屬性名映射到JSON字段名。
通過以上方法,可以在MyBatis-Plus中靈活地定義實體類與數據庫以及JSON的映射關系。
Golang
GORM 的映射包括結構體與表的映射、字段與列的映射、關聯關系映射等。
1. 結構體與表的映射
GORM 默認會將結構體名稱的復數形式作為表名,例如 User 結構體對應的表名默認為 users。也可以通過 gorm:“table:your_table_name” 標簽來指定表名。
db.AutoMigrate(&User{}) 會根據 User 結構體的定義自動創建或更新對應的數據庫表。
package mainimport ("gorm.io/driver/sqlite""gorm.io/gorm"
)// User 結構體
type User struct {gorm.ModelName stringEmail string
}func main() {db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})if err != nil {panic("failed to connect database")}// 自動遷移表結構db.AutoMigrate(&User{})
}
2. 字段與列的映射
GORM 默認會將結構體字段名轉換為蛇形命名(snake_case)作為列名,例如 UserName 字段對應的列名默認為 user_name。也可以通過 gorm:“column:your_column_name” 標簽來指定列名。
3. 關聯關系映射
一對多主要通過外鍵來實現,多對多通過標簽實現,比如下面就是多對多的示例。
type User struct {gorm.ModelName stringRoles []Role `gorm:"many2many:user_roles;"`
}type Role struct {gorm.ModelName stringUsers []User `gorm:"many2many:user_roles;"`
}
4. 其他映射相關標簽
gorm:“primaryKey”:指定字段為主鍵。
gorm:“unique”:指定字段為唯一約束。
gorm:“not null”:指定字段為非空約束。