Gorm快速入门笔记 | 青训营笔记

89 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

一、ORM介绍

ORM:对象关系映射(Object Relational Mapping,简称ORM),也就是让你数据库的表结构变成你代码定义的数据结构(golang当中的结构体结构)从而做到,代码结构即为数据库结构,代码行为即为数据库行为

需要注意的是:

golang中结构体里面的变量(Name)必须首字母大写,否则创建不出列,会被自动忽略 gorm指定类型 json表示json接收的时候的名称 binding required表示必须传入

通俗来说就是将数据表结构自动对应上为你定义的结构体(或者Java中的类)格式

二、使用步骤

一般而言对于数据库的使用步骤如下

1. 创建连接。


    import(
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
)
funcmain(){
  // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
  dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

其中配置项包含

DSN: "gorm:gorm@tcp(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local", (DSN data source name)

DefaultStringSize: 256 (string 类型字段的默认长度)

DisableDatetimePrecision: true, (禁用 datetime 精度,MySQL 5.6 之前的数据库不支持)

DontSupportRenameIndex: true, (重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引)

DontSupportRenameColumn: true, ( 用 change 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列)

SkipInitializeWithVersion: false, ( 根据当前 MySQL 版本自动配置)

2.利用连接执行sql语句,操作数据库。
3.获取并解析结果。
4.关闭连接。

连接池: 数据库操作都是通过连接去执行的,频繁创建与销毁连接,是需要花费较大代价的,因此一般都采用连接池对连接进行复用

GORM 使用 database/sql 维护连接池

三、CURD操作

创建


result := db.Create(&user) // 通过数据的指针来创建

user.ID             // 返回插入数据的主键
result.Error        // 返回 error
result.RowsAffected // 返回插入记录的条数

删除

如果没有包含主键则会批量删除

// Email 的 ID 是 `10`
db.Delete(&email)
// DELETE from emails where id = 10;

// 带额外条件的删除
db.Where("name = ?", "jinzhu").Delete(&email)
// DELETE from emails where id = 10 AND name = "jinzhu";

最基础的查询利用Find,其中和删除一样可以利用where来添加条件,可以链式调用