文章目录
- 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 main
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// User 结构体
type User struct {
gorm.Model
Name string
Email 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.Model
Name string
Roles []Role `gorm:"many2many:user_roles;"`
}
type Role struct {
gorm.Model
Name string
Users []User `gorm:"many2many:user_roles;"`
}
4. 其他映射相关标签
gorm:“primaryKey”:指定字段为主键。
gorm:“unique”:指定字段为唯一约束。
gorm:“not null”:指定字段为非空约束。