GO数据库操作

本文介绍了GORM,一个强大的Go语言ORM库,涵盖了关联、挂钩、预加载、事务处理、CRUD操作等特性,包括如何定义模型、连接数据库、执行基本的增删改查操作以及高级功能的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Golang 出色的 ORM 库为 GORM。

官网文档:https://gorm.io/docs/

我们来说说增删改查的用法,更深入的研究可以去官网看看。

GORM功能概览:

  • 关联(有一个、有多个、属于、多对多、多态性、单表继承)
  • 挂钩(创建/保存/更新/删除/查找之前/之后)
  • 急切加载Preload,Joins
  • 事务、嵌套事务、保存点、RollbackTo 到保存点
  • 上下文、准备语句模式、DryRun 模式
  • 批量插入、FindInBatches、使用 Map 查找/创建、使用 SQL Expr 和 Context Valuer 进行 CRUD
  • SQL 生成器、更新插入、锁定、优化器/索引/注释提示、命名参数、子查询
  • 复合主键、索引、约束
  • 自动迁移
  • 记录器
  • 可扩展、灵活的插件 API:Database Resolver(多个数据库、读/写拆分)/Prometheus...

  下载依赖

go -u gorm.io/gorm

表Model定义

GORM内置了一个gorm.Model结构体,gorm.Model包含了ID, CreatedAt, UpdatedAt, DeletedAt四个字段。默认情况下,GORM 使用 ID 作为主键,使用结构体名的 蛇形复数 作为表名,字段名的 蛇形 作为列名,并使用 CreatedAt、UpdatedAt 字段追踪创建、更新时间。如果表中定义了这种字段,GORM 在创建、更新和删除时会自动填充当前时间。

当然也可以不用gorm.Model,完全自定义创建、更新时间及其格式,这就需要在创建和更新时自己赋值并入库。

// 定义product表,使用gorm.Model结构体
type Product struct {
	gorm.Model
	Code  string
	Price uint
}

// 指定product表名
func (Product) TableName() string {
	return "product"
}

连接数据库

var db *gorm.DB

// 连接数据库
func ConnDB() {
	var (
		Username = "root"
		Password = "123456"
		Endpoint = "localhost:3306"
		Database = "aiee"
		err      error
	)
	dsn := fmt.Sprintf(
		"%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true&loc=L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值