GORM(一) | 青训营笔记

85 阅读2分钟

GORM

gorm 是一款用 Golang 开发的 orm 框架

连接MySQL

GORM目前支持MySQL、SQL server、PostgreSQL和SQLite,GORM通过驱动来连接数据库,如果需要连接其他类型的数据库可以复用/自行开发驱动

go
复制代码
// MySQL 配置信息
username := "root"              // 账号
password := "xxxxxx" // 密码
host := "127.0.0.1"             // 地址
port := 3306                    // 端口
DBname := "gorm1"               // 数据库名称
timeout := "10s"                // 连接超时,10秒
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", username, password, host, port, DBname, timeout)
// Open 连接
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic("failed to connect mysql.")
}

每一张表都会对应一个结构体

约定

  • 使用名为ID的字段作为主键
  • 使用结构体的蛇形复数作为表名
  • 字段名的蛇形作为列明
  • 使用CreatedAt、UpdatedAt和DeletedAt字段作为创建、更新和删除时间

字段标签tag

在创建模型时,可以给字段设置 tag 来对该字段一些属性进行定义

标签名说明
column指定db列名
type列数据类型
size指定列大小
primaryKey指定列为主键
unique指定列为唯一
default指定列的默认值
precision指定列的精度
scale指定列大小
not null指定列为NOT NULL
autoincrement指定列为自动增长
embedded嵌套字段
embeddedPrefix嵌入字段的列明前缀
autoCreateTime创建时追踪当前时间
autoUpdateTime创建/更新时追踪当前时间
index根据参数创建索引,多个字段使用相同的名称则创建复合索引
check创建检查约束
<-设置字段写入的权限,<-:create 只创建、<-:update 只更新、<-:false 无写入权限、<- 创建和更新权限
->设置字段读的权限 ->:false 无读权限
-武略该字段,无读写权限

自动迁移

在数据库的表尚未初始化时,gorm通过db.AutoMigreate方法根据指定的结构体自动建表,如果表已经存在,那么该方法就不会有任何的动作

作者:梦晓Devil
链接:juejin.cn/post/719331…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。