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