Skip to content

增删改查

一些curd案例

链接数据库

go
// 配置格式  username:password@tcp(ip:port)/database?charset=utf8mb4&parseTime=true&loc=Local
db, err := gorm.Open(mysql.Open("root:123456@tcp(127.0.0.1:3306)/base_api?charset=utf8mb4&parseTime=true&loc=Local"))
if err != nil {
  spanic(err)
}

表操作

  • 结构头与表名映射关系
  • 结构体必须大驼峰命名,并根据命名解析成表名
  • 示例:ShopProduct 会命名为 shop_products
go
//先定义一个结构体(表)
type Test struct {
	Id        int64
	Name      string
	CreatedAt string
}
//表相关操作db.Migrator() @see https://gorm.io/zh_CN/docs/migration.html
//创建tests表,表名默认为结构体名称小写+s
db.Migrator().AutoMigrate(&model.Test{})
// .Table() 自定义表名
db.Table("test").Migrator().CreateTable(&model.Test{})
//删除表
db.Migrator().DropTable(&model.Test{})
//判断表是否存在
db.Migrator().HasTable(&model.Test{})

数据操作

go
//新增数据
db.Create(&model.Test{Name: "zhangsan", CreatedAt: time.Now().String()})
//查询数据
var test model.Test
db.First(&test, "name = ? ", "zhansan")
fmt.Printf("%+v", test)
//更新数据
db.Model(&test).Update("name", "zhangsan")
//删除数据
db.Delete(&test)