亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

Golang gorm框架使用簡介

2023-11-01 09:37:44
10
0

一、字段映射-模型定義

type UserModel struct {
   BaseModel
   UserId int64  `gorm:"index"`                   //設置一個普通索引,沒設置索引名,gorm會自動命名
   Age    int    `gorm:"column:age"`              //映射到列名稱
   Name   string `gorm:"size:255;index:idx_name"` //size:設置長度大小,index:設置索引,取了索引名
   Status string `gorm:"type:enum('published','pending','deleted');default:'pending'"`
}
func (u *UserModel) TableName() string {
   return "User"
}
type BaseModel struct {
   ID       uint `gorm:"primary_key"`
   CreateAt time.Time
   UpdateAt time.Time
}

二、增刪改查

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)

 

0條評論
0 / 1000
x****n
7文章數
0粉絲數
x****n
7 文章 | 0 粉絲
x****n
7文章數
0粉絲數
x****n
7 文章(zhang) | 0 粉絲(si)
原(yuan)創

Golang gorm框架使用簡介

2023-11-01 09:37:44
10
0

一、字段映射-模型定義

type UserModel struct {
   BaseModel
   UserId int64  `gorm:"index"`                   //設置一個普通索引,沒設置索引名,gorm會自動命名
   Age    int    `gorm:"column:age"`              //映射到列名稱
   Name   string `gorm:"size:255;index:idx_name"` //size:設置長度大小,index:設置索引,取了索引名
   Status string `gorm:"type:enum('published','pending','deleted');default:'pending'"`
}
func (u *UserModel) TableName() string {
   return "User"
}
type BaseModel struct {
   ID       uint `gorm:"primary_key"`
   CreateAt time.Time
   UpdateAt time.Time
}

二、增刪改查

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)

 

文章來自個人專欄
文(wen)章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0