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…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。