package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Product struct {
gorm.Model
Code string
Price uint
}
func main() {
dsn := "root:root@tcp(127.0.0.1:3306)/test_lc"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
fmt.Println(err)
}
// //创建表
db.AutoMigrate(&Product{})
p := Product{
Price: 200,
Code: "2",
}
//插入数据
db.Create(&p)
//查看数据
var product Product
db.First(&product, 1)
fmt.Printf("product: %v\n", product)
//改
//这里有坑,修改单个字段使用的是update 修改多个使用到的是updates
db.Model(&product).Update("Price", 300)
//更新多个字段
db.Model(&product).Updates(Product{Price:300,Code:"3"})
db.Model(&product).Updates(map[string]interface{}{"Price": 300, "Code": "3"})
//删
db.Delete(&product, 1)
}
gorm 模型 model
gorm的模型更多的是一种约定,而不是配置,gorm.Model是grom的一种结构体代表的是
type Model struct{
ID uint `gorm:"primaryKey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}