Lesson6 Database/sql 与 GORM

56 阅读1分钟

3.2 Database/sql 及 GORM 相关解读

Quick Start

var user User
rows, e := DB.Query("select * from user where id in (1,2,3)")
if e == nil {
    errors.New("query incur error")
}
for rows.Next(){
    e := rows.Scan(user.sex, user.phone, user.name, user.id, user.age)
    if e != nil{
        fmt.Println(json.Marshal(user))
    }
}
rows.Close()
//单行查询操作
DB.QueryRow("select * from user where id=1").Scan(user.age, user.id, user.name, user.phone, user.sex)

设计原理:应用程序 (操作接口) database/sql (连接接口、操作接口)数据库

DB连接类型:直接连接/Conn 预编译/Stmt 事务/Tx

CRUD操作:www.liwenzhou.com/posts/Go/my…

模型定义:约定优于配置 gorm.io/docs/conven…

关联操作:cloud.tencent.com/developer/a…

3.3 GORM设计原理与最佳实践

3.3.1 设计原理

GORM STATEMENT:gorm.io/zh_CN/docs/…

插件:Finisher Method -> 决定Statement类型 -> 执行Callbacks -> 生成SQL并执行

3.3.2 最佳实践

SQL表达式查询:使用gorm.Expr / Struct定义GormValuer / 自定义查询SQL实现接口 / SubQuery