github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/04_database/demo4_gorm/overview/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "github.com/jinzhu/gorm" 6 _ "github.com/jinzhu/gorm/dialects/mysql" 7 "time" 8 ) 9 10 type UserInfo struct { 11 Uid uint `gorm:"primary_key;column:uid"` 12 Username string `gorm:"column:username"` 13 Departname string `gorm:"column:departname"` 14 Created string `gorm:"column:created"` 15 } 16 17 func (UserInfo) TableName() string { 18 return "userinfo" 19 } 20 21 type User struct { 22 gorm.Model 23 Name string 24 Age int `gorm:"default:18"` 25 Birthday time.Time 26 } 27 28 //func (user *User) BeforeCreate(scope *gorm.Scope) error { 29 // scope.SetColumn("ID", 1) 30 // return nil 31 //} 32 33 func main() { 34 db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/go_test?charset=utf8") 35 if err != nil { 36 panic("failed to connect database") 37 } 38 defer db.Close() 39 // 开启 Logger, 以展示详细的日志 40 db.LogMode(true) 41 //db.SetLogger(log.New(os.Stdout, "【】", 0)) 42 43 //fmt.Println(db.HasTable(&UserInfo{})) 44 // 自动迁移模式 ,给给 45 //db.AutoMigrate(&UserInfo{}) 46 47 //createTable(db) 48 //create(db) 49 query(db) 50 } 51 52 func query(db *gorm.DB) { 53 //var listU []UserInfo 54 //db.Find(&listU) 55 //fmt.Println(listU) 56 57 u := UserInfo{} 58 db.Where("username= ?", "李维民").Find(&u) 59 fmt.Println(u) 60 } 61 62 func createTable(db *gorm.DB) { 63 db.AutoMigrate(&User{}) 64 //db.Table("user").CreateTable(&User{}) 65 } 66 67 func create(db *gorm.DB) { 68 user := User{Name: "Jinzhu", Age: 20, Birthday: time.Now()} 69 record1 := db.NewRecord(user) // => 返回 `true` ,因为主键为空 70 fmt.Println("record1=", record1, user.ID) 71 db.Create(&user) 72 record2 := db.NewRecord(user) // => 在 `user` 之后创建返回 `false` 73 fmt.Println("record2=", record2, user.ID) 74 }