1.用户model
type UserBasic struct { gorm.Model Name string PassWord string Phone string `valid:"matches(^1[3-9]{1}\\d{9}$)"` Email string `valid:"email"` Avatar string //头像 Identity string ClientIp string ClientPort string Salt string LoginTime time.Time HeartbeatTime time.Time LoginOutTime time.Time `gorm:"column:login_out_time" json:"login_out_time"` IsLogout bool DeviceInfo string }
2.gorm引入
golang学习之gorm(一):Gorm介绍_golang gorm_浅弋、璃鱼的博客-CSDN博客
1)连接数据库db, err := gorm.Open(mysql.Open() )
2)创建或者更新一张和指定strcut结构一样的表db.AutoMigrate(&models.UserBasic{})
3)增db.Create(user)
4)删db.Delete(&product, 1)
5)改db.Model(user).Update("PassWord", "1234")
6)查db.First(user, 1),查主键为1的user
/** * @Auth:ShenZ * @Description: * @CreateDate:2022/06/15 10:57:44 */ package main import ( "fmt" "ginchat/models" "gorm.io/driver/mysql" "gorm.io/gorm" ) func main() { //gorm连接指定ip的数据库 db, err := gorm.Open(mysql.Open("root:tx2311571602@tcp(127.0.0.1:3306)/ginchat?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Config{}) if err != nil { panic("failed to connect database") } // 迁移 schema,用传入的模型格式更新一张表结构 //db.AutoMigrate(&models.Community{}) db.AutoMigrate(&models.UserBasic{}) //db.AutoMigrate(&models.Message{}) //db.AutoMigrate(&models.GroupBasic{}) //db.AutoMigrate(&models.Contact{}) // Create user := &models.UserBasic{} user.Name = "申专" db.Create(user) // // Read fmt.Println(db.First(user, 1)) // 根据整型主键查找第一条记录 //db.First(user, "code = ?", "D42") // 查找 code 字段值为 D42 的记录 // Update - 将 product 的 price 更新为 200 db.Model(user).Update("PassWord", "1234") // Update - 更新多个字段 //db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段 //db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"}) // Delete - 删除 product //db.Delete(&product, 1) }
3.gin引入
文档 | Gin Web Framework (gin-gonic.com)
创建一个gin服务,然后写处理请求函数,最后在接口上运行。
用法见gin框架_BigOrangeSama的博客-CSDN博客
视频教程里是把这一流程进行了分割:
把服务创建和处理请求单独放在router.app.go下,
其路由处理请求的处理函数是放在了service包下执行跳转一个GetIndex函数。
最后在主函数调用路由,在指定接口运行,以达到解耦的效果。