gorm基本操作CRUD 一

49 阅读1分钟

CRUD

  1. Create(创建) :创建新的数据条目。Create()函数
  2. Read(读取) :读取现有的数据条目。Find()获取全部,First()获取一行
  3. Update(更新) :更新现有的数据条目。Update()函数
  4. Delete(删除) :删除现有的数据条目。Delete()函数

gorm与数据库的交互过程通过DSN字符串绑定mysql的IP地址 端口以及数据库用户名和密码。

  • 利用Open函数创建数据库连接db。
  • db.AutoMigrate(&Company{}) 会自动创建对应函数的表
  • db.Where子句作为条件,等价于sql的where
  • 之后通过Delete()、Create()、这些函数中的参数是对应数据库模型的类型名,对应数据库中的表名。

仔细观察不难发现,gorm的操作与sql语句恰好是相反的。也就是where order from tables

select * from tablename where field = "xxx"

关联关系等内容会放到下一篇进行介绍,尽情期待。

案例

package main

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

type Company struct {
	ID          int
	CompanyName string `json:"company_name"`
	Content     string `json:"content"`
	Platform    string `json:"platform"`
}

func main() {
	// 连接数据库
	dsn := "root:123456@tcp(127.0.0.1:3306)/testDB?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("failed to connect database.")
	}

	db.AutoMigrate(&Company{})
	// 创建用户
	company := Company{CompanyName: "深圳腾讯计算机技术有限公司", Content: "测试内容", Platform: "测试平台"}
	result := db.Create(&company)
	if result.Error != nil {
		panic("failed to create user")
	}

	// fieldName := "company_name" 	// 在此处替换字段名和字段值
	// fieldValue := "深圳腾讯计算机技术有限公司"

	// result = db.Where(fieldName+" = ?", fieldValue).Delete(&Company{}) // // 删除匹配条件的行数据
	// if result.Error != nil {
	// 	panic("failed to delete rows")
	// }
	// 打印受影响的行数
	println(result.RowsAffected)
}

image.png

image.png

image.png