1、創建數據庫連接
func GetDB() (*gorm.DB, error) {
   dialect := mysql.New(mysql.Config{
      DriverName: "mysql",
      DSN:        "用戶名:密碼@tcp(127.0.0.1:3306)/gormdemo?charset=utf8&loc=Local",
   })
   gormCfg := &gorm.Config{
      NamingStrategy: schema.NamingStrategy{
         SingularTable: true,
      },
      CreateBatchSize: 10,
   }
   gDB, err := gorm.Open(dialect, gormCfg)
   if err != nil {
      return nil, err
   }
   sqlDb, err := gDB.DB()
   if err != nil {
      return nil, err
   }
   sqlDb.SetConnMaxLifetime(60 * 1000)
   sqlDb.SetMaxIdleConns(30)
   sqlDb.SetMaxOpenConns(100)
   return gDB, nil
}
2、新增數據
db, err := GetDB()
if err != nil {
   print(err.Error())
   return
}
user := &UserModel{
   UserId: 1,
   Age:    11,
   Name:   "xxx",
   Status: "published",
}
db.Create(user)
3、修改數據
db, err := GetDB()
if err != nil {
   print(err.Error())
   return
}
db.Model(&UserModel{BaseModel: BaseModel{ID: 1}}).Update("name", "xxxx")
db.Model(&UserModel{}).Where("id = ? and age = ?", 3, 11).Updates(UserModel{UserId: 123, Name: "eee", Age: 2})
4、刪除數據
db, err := GetDB()
if err != nil {
   print(err.Error())
   return
}
// 加debug 打印sql語句
db.Debug().Where("id = ?", 4).Delete(&UserModel{})
db.Delete(&UserModel{}, "id = ?", 5)
5、查詢數據
db, err := GetDB()
if err != nil {
   print(err.Error())
   return
}
// 查詢第一條記錄
var user UserModel
db.First(&user)
fmt.Println(user)
// 查詢最后一條記錄
var user2 UserModel
db.Last(&user2)
fmt.Println(user2)
// 指定某條記錄,主鍵為整型可用
var user3 UserModel
db.First(&user3, 1)
fmt.Println(user3)
//where條件-符合條件的第一條
var user4 UserModel
db.Where("name = ?", "lalala").First(&user4)
fmt.Println(user4)
//where條件-符合條件的所有記錄
var user5 []UserModel
db.Where("name = ?", "xxxx").Find(&user5)
for _, v := range user5 {
   fmt.Println(v)
}
// 總數
var count int64
var user6 []UserModel
db.Find(&user6).Count(&count)
fmt.Println(count)
// select 查詢
var user7 UserModel
db.Where("id = ?", 1).Select("id,name,age").Find(&user7)
fmt.Println(user7)
// 原生查詢
var user8 []UserModel
db.Raw("select * from User where id = ? and name = ?", 1, "xxxxx").Scan(&user8)
fmt.Println(user8)