GORM 指南

GORM 指南

The fantastic ORM library for Golang aims to be developer friendly.

特性

全功能 ORM

关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)

Create,Save,Update,Delete,Find 中钩子方法

支持 Preload、Joins 的预加载

事务,嵌套事务,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…

每个特性都经过了测试的重重考验

开发者友好

安装go get -u gorm.io/gormgo get -u gorm.io/driver/sqlite

快速入门package mainimport ( "gorm.io/gorm" "gorm.io/driver/sqlite")type Product struct { gorm.Model Code string Price uint}func main() { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") } // 迁移 schema db.AutoMigrate(&Product{}) // Create db.Create(&Product{Code: "D42", Price: 100}) // Read var product Product db.First(&product, 1) // 根据整型主键查找 db.First(&product, "code = ?", "D42") // 查找 code 字段值为 D42 的记录 // Update - 将 product 的 price 更新为 200 db.Model(&product).Update("Price", 200) // Update - 更新多个字段 db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段 db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"}) // Delete - 删除 product db.Delete(&product, 1)}

相关推荐

18个经典室内趣味游戏
365bet在线网址

18个经典室内趣味游戏

07-07 233
Kindle 无法跨设备同步时该怎么办? (2025)
海信和乐视电视品牌对比(探讨海信和乐视电视的优缺点,帮助消费者做出明智选择)