java | MyBatis-plus映射和golang映射对比

发布于:2025-02-22 ⋅ 阅读:(13) ⋅ 点赞:(0)


这篇也是做数据库映射方面的对比:

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”:指定字段为非空约束。


网站公告

今日签到

点亮在社区的每一天
去签到