1.用户model
type UserBasic struct {gorm.ModelName stringPassWord stringPhone string `valid:"matches(^1[3-9]{1}\\d{9}$)"`Email string `valid:"email"`Avatar string //头像Identity stringClientIp stringClientPort stringSalt stringLoginTime time.TimeHeartbeatTime time.TimeLoginOutTime time.Time `gorm:"column:login_out_time" json:"login_out_time"`IsLogout boolDeviceInfo 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 mainimport ("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{})// Createuser := &models.UserBasic{}user.Name = "申专"db.Create(user)// // Readfmt.Println(db.First(user, 1)) // 根据整型主键查找第一条记录//db.First(user, "code = ?", "D42") // 查找 code 字段值为 D42 的记录// Update - 将 product 的 price 更新为 200db.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函数。
最后在主函数调用路由,在指定接口运行,以达到解耦的效果。