#在gorm中实现crud

GORM 是一个用于 Go 语言的 ORM 库,它封装了对数据库的操作,并简化了 SQL 语句的使用。支持多种数据库:如 MySQL、PostgreSQL、SQLite、SQL Server

CRUD 是数据库操作的四种基本功能:

  • Create:创建数据
  • Read:读取数据
  • Update:更新数据
  • Delete:删除数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
创建数据库
db, err := gorm.Open(mysql.Open("user:password@/dbname"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
//创建表
type User struct {
ID uint `gorm:"primaryKey"` // 主键
Name string `gorm:"size:100"` // Name 列,最大长度 100
Age int `gorm:"default:18"` // Age 列,默认值 18
Email string `gorm:"unique"` // Email 列,唯一约束
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}

//更新创建表
db.AutoMigrate(&User{})
AutoMigrate() 的功能
创建表:如果表不存在,AutoMigrate() 会根据结构体定义自动创建表。
更新表结构:如果表已经存在,AutoMigrate() 会检查表结构是否与结构体定义匹配,若不匹配(例如新增了字段),则自动更新表结构。
保留现有数据:在更新表结构时,AutoMigrate() 不会删除已有的表数据。


// 创建数据
user := User{Name: "John", Age: 25, Email: "john@example.com"}
result := db.Create(&user)
// 同时创建多个用户
users := []User{
{Name: "Alice", Age: 22, Email: "alice@example.com"},
{Name: "Bob", Age: 30, Email: "bob@example.com"},
}
db.Create(&users)


// 查找第一条记录
var user User
db.First(&user, 1) // 根据主键查找用户,ID 为 1
// 查找所有记录
var users []User
db.Find(&users) // 查找所有用户
// 根据条件查找用户
var users []User
db.Where("age > ?", 25).Find(&users) // 查找所有年龄大于 25 的用户


// 更新单个字段
db.Model(&user).Update("Age", 26)
// 更新多个字段
db.Model(&user).Updates(User{Age: 26, Email: "newemail@example.com"})

// 删除记录
db.Delete(&user) // 根据主键删除
// 根据条件删除
db.Where("name = ?", "John").Delete(&User{})