创建官方文档
建议大家没事多看看文档
package main
import (
"fmt"
"log"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var db *gorm.DB
func init() {
dsn := "root:root@tcp(127.0.0.1:3306)/go_orm?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
db = d
}
type User struct {
gorm.Model
Name string
Age int
Birthday time.Time
}
// 创建表
func createTable() {
db.AutoMigrate(&User{})
}
// 创建记录
func insertOne() {
user := User{Name: "王帆", Age: 18, Birthday: time.Now()}
d := db.Create(&user)
fmt.Printf("user.ID: %v\n", user.ID)
fmt.Printf("d.RowsAffected: %v\n", d.RowsAffected)
fmt.Printf("d.Error: %v\n", d.Error)
}
// 用指定的字段创建记录
func insertFiled() {
user := User{Name: "王帆1", Age: 19}
d := db.Select("Name", "Age").Create(&user)
fmt.Printf("user.ID: %v\n", user.ID)
fmt.Printf("d.RowsAffected: %v\n", d.RowsAffected)
fmt.Printf("d.Error: %v\n", d.Error)
}
// 批量插入
func insertMany() {
// var users = []User{{Name: "1"}, {Name: "2"}, {Name: "3"}}
var users = []User{{Name: "4"}, {Name: "5"}, {Name: "6"}}
d := db.Select("Name").Create(&users)
for _, user := range users {
fmt.Printf("user.ID: %v\n", user.ID)
}
fmt.Printf("d.RowsAffected: %v\n", d.RowsAffected)
fmt.Printf("d.Error: %v\n", d.Error)
}
// 创建钩子
func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
fmt.Println("BeforeCreate...")
return
}
func main() {
// createTable()
// insertOne()
// insertFiled()
// insertMany()
}