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  }