Gorm的使用 增删改查

发布时间 2023-04-17 16:19:12作者: 李若盛开

 

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"`
}