go gorm 操作MySQL初探

  1. 安装
bash 复制代码
go get -u gorm.io/gen
  1. 实例
bash 复制代码
package main

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type Product struct {
	gorm.Model
	Name  string
	Price float64
}

func main() {
	// 其中loc是为了解决时间类型timezone少8小时
	dsn := "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local"

	d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic(err)
	}

	d.AutoMigrate(&Product{})

	// d.Create(&Product{Name: "haha", Price: 120.09})

	var product Product
	// 根据ID查询
	d.First(&product, 1)
	// 根据name查询
	d.First(&product, "name=?", "haha")
	fmt.Printf("product.Price: %v\n", product.Price)
	// update一个字段
	d.Model(&product).Update("Price", 190)

	// 更新多个字段
	d.Model(&product).Updates(Product{Name: "11", Price: 120})
	d.Model(&product).Updates(map[string]interface{}{"Price": 199})
}
	//软删除,更新deleted_at字段
	d.Where("name=?", "11").Delete(&Product{})
	//硬删除
	d.Where("name=?", "11").Unscoped().Delete(&Product{})

参考
https://duoke360.com/tutorial/gorm/query-recored

相关推荐
Dontla6 分钟前
go语言Windows安装教程(安装go安装Golang安装)(GOPATH、Go Modules)
开发语言·windows·golang
铁东博客12 分钟前
Go实现周易大衍筮法三变取爻
开发语言·后端·golang
被摘下的星星1 小时前
MySQL count()函数的用法
数据库·mysql
素玥1 小时前
实训5 python连接mysql数据库
数据库·python·mysql
喵了几个咪3 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
Chasing__Dreams3 小时前
Mysql--基础知识点--95--为什么避免使用长事务
数据库·mysql
wechat_Neal4 小时前
Golang的车载应用场景
开发语言·后端·golang
数据知道5 小时前
claw-code 源码分析:OmX `$team` / `$ralph`——把 AI 辅助开发从偶发灵感变成可重复流水线
数据库·人工智能·mysql·ai·claude code·claw code
__土块__5 小时前
大厂后端一面模拟:从线程安全到分布式缓存的连环追问
jvm·redis·mysql·spring·java面试·concurrenthashmap·大厂后端
做个文艺程序员6 小时前
深入 MySQL 内核:MVCC、Buffer Pool 与高并发场景下的极限调优
数据库·mysql·adb