gorm中插入数据和查询数据

74 阅读1分钟

代码:

package main

import (
	"fmt"

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

func ConnectDB() (*gorm.DB, error) {
	dsn := "root:root@tcp(127.0.0.1:3306)/ceshi?charset=utf8mb4&parseTime=True&loc=Local"
	// 根据实际的用户名、密码、主机地址、端口号、数据库名修改dsn
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	return db, err
}

type User struct {
	gorm.Model
	NAME  string
	Email string
}

func main() {
	db, err := ConnectDB()
	if err != nil {
		panic("无法连接数据库")
	}
	
	// 自动迁移,确保数据库表结构与结构体一致
	//db.AutoMigrate(&User{})

	// 创建一个用户实例并插入数据库
	user := User{NAME: "John", Email: "john@example.com"}
	result := db.Create(&user)
	if result.Error != nil {
		fmt.Println("插入失败:", result.Error)
		return
	}
	fmt.Printf("插入成功,用户 ID: %d\n", user.ID)

	// 查询
	/* var users []User
	result := db.Find(&users)
	if result.Error == nil {
		// 遍历查询到的多条记录
		for _, u := range users {
			fmt.Printf("用户信息:%+v\n", u)
			fmt.Println(u.Email)
		}
	} */

}

说明: 创建结构体和开启自动迁移后,go可自动创建表,非常方便和规范。每次查询前需要定义一个结构体的切片类型,在查询中调用地址。