G01学习笔记-6

阅读位置8.10

GORM

文档地址:《GORM 中文文档》
功能大全

  • 全功能 ORM
  • 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
  • Create,Save,Update,Delete,Find 中钩子方法
  • 支持 PreloadJoins 的预加载
  • 事务,嵌套事务,Save Point,Rollback To Saved Point
  • Context,预编译模式,DryRun 模式
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
  • 复合主键,索引,约束
  • Auto Migration
  • 自定义 Logger
  • 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
  • 每个特性都经过了测试的重重考验
  • 开发者友好

1、安装

  1. 安装 gorm
    $ go get -u gorm.io/gorm
  2. 按照 gorm 的 MySQL 的数据库驱动
    $ go get -u gorm.io/driver/mysql

2、快速开始

2.1 连接
config := mysql.New(mysql.Config{  
    DSN:  "homestead:secret@tcp(127.0.0.1:3306)/goblog?charset=utf8&parseTime=True&loc=Local",  
})
//*gorm.DB 对象
DB, err = gorm.Open(config,  &gorm.Config{})
.
// or 配置日志,可查看执行的sql
import gormlogger "gorm.io/gorm/logger"
.
.
.
DB, err = gorm.Open(config,  &gorm.Config{
    Logger: gormlogger.Default.LogMode(gormlogger.Info),  
})

gorm.Config 允许设置初始化配置信息,其 Logger 可用来指定和配置 GORM 的调试器。
LogMode 里填写的是日志级别,分别如下:
Silent —— 静默模式,不打印任何信息
Error —— 发生错误了才打印
Warn —— 发生警告级别以上的错误才打印
Info —— 打印所有信息,包括 SQL 语句
默认使用的是 Warn

2.2 配置
//*gorm.DB 对象有一个方法 DB() 可以直接获取到 database/sql 包里的 *sql.DB 对象
//db 为gorm.Open返回的 *gorm.DB 对象
sqlDB,  _  := db.DB()
// 设置最大连接数 
sqlDB.SetMaxOpenConns(100)  
// 设置最大空闲连接数 s
qlDB.SetMaxIdleConns(25)  
// 设置每个链接的过期时间 
sqlDB.SetConnMaxLifetime(5  * time.Minute)
2.3 使用
  1. 查询
  • First():获取一条记
    // First 获取一条记录
    err := db.First(&article ,  1).Error
    // select * from articles where id = 1
  • Find():获取所有记录
    //Find 获取全部记录
    var articles []Article 
    err := db.Find(&articles).Error
    // select * from articles

GORM 提供的是链式 API,如果遇到任何错误,GORM 会设置 *gorm.DB 的 Error 字段
找不到记录时,GORM 会返回 ErrRecordNotFound 错误

  1. 创建 Create ()

    article := Article{ Title: title, Body: body,  }
    result := db.Create(&article)
    // insert into articles(title, body) vaules (title, body)
    //insertID := article.ID
    //err := result.Error

    GORM 的 Create() 有几个返回值可供判断:

    article.ID             // 返回插入数据的主键
    result.Error           // Create结果返回 error
    result.RowsAffected    // 返回插入记录的条数
  2. 修改 Save ()

    article := Article{ID:id, Title: title, Body: body,  }
    result := db.Save(&article)
    // update articles set title = title, body = body where id = id

    返回结果有两个元素可以判断:

    result.RowsAffected // 更新的记录数
    result.Error        // 更新的错误
  3. 删除 Delete()

    article := Article{ID:id, Title: title, Body: body,  }
    result := db.Delete(&article)
    // delete from articles where id = id

    同样,返回结果有两个元素可以判断:

    result.RowsAffected // 更新的记录数
    result.Error        // 更新的错误

关于 gorm ,后面继续学习,先欠着

  • 贵在坚持,保持进步
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!