Gin框架-温故知新(二)

控制器

userController.go 文件名
package admin
法1:
type UserController struct{
BaseController
}

func (con UserController) Add(c *gin.Context){
c.String(200,"Jack")
}
//路由里面
法1
r.GET("/user/add",admin.UserController{}.Add)

法2:
func UserAdd(c *gin.Context){
c.String(200,"Jack")
}
//路由里面
r.GET("/user/add",admin.UserAdd)

定义基类

type BaseController struct{}

func (con BaseController) success(c *gin.Context) {
c.String(http.StatusOk,"文章列表~~")
con.success(c)
}

func (con BaseController) error(c *gin.Context) {
c.String(http.StatusOk,"文章列表~~")
con.error(c)
}

type UserController struct{
BaseController
}

func (con UserController) Add(c *gin.Context){
con.success("成功")
}

Session

安装
go install github.com/gin-contrib/sessions

在main函数里,设置存储引擎
//cookie引擎
store:=cookie.NewStore([]byte("secret"))
//redis 引擎
sotre:= redis.NewStore(10,"tcp","localhost:6379","",[]byte("secret"))

r.Use(sessions.Sessions("mysession",store))

session:=sessions.Default()
session.Set("username","张三111")
session.Get("username")
session.Save() //必须调用

//分布式session
把session 放在redis里

设置过期时间

session.Options(sessions.Options{
MaxAge: 3600 * 6
})

GORM

是golang的一个orm框架,object relation map 对象关系映射

安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

models下的User
type User struct {
    Id        int
    User      string
    Age       int `gorm:"default:18"` //默认值18
    Email     string
    AddTime   int
    DeletedAt gorm.DeletedAt //开启软删除
}

user := models.User{}
//models.DB.Where("id IN ?", []int{1, 2}).Take(&user)
//models.DB.Find(&user) //对单个对象使用Find而不带limit,db.Find(&user)将会查询整个表并且只返回第一个对象,这是性能不高并且不确定的。
//models.DB.Last(&user) //按照id倒序

//models.DB.First(&user, 1) //where id=1
//models.DB.First(&user, "id=?", 2) //where id=2
//user1 := models.User{Id: 3}
//models.DB.Find(&user1)
//models.DB.Find(&user, []int{1, 2, 3}) //where id in 123
//
//models.DB.Where("Id=?", "1").Find(&user)
//models.DB.Where(&models.User{User: "le0", Age: 0}).First(&user) //因为年龄是0 所以不查询 条件只有 where user="le0"
//models.DB.Where(&models.User{User: "le0"}, "Age").First(&user) //因为年龄是0 所以不查询 条件只有 where user="le0"
//models.DB.Where(map[string]interface{}{"User": "lee4", "Age": 0}).Find(&user) //where user=le0 and age=0
//
//models.DB.Where([]int64{2, 3, 4}).Find(&user) //where id in 2 3 4
//
//models.DB.Not("user=?", "le0").First(&user) //where not user=le0
//
//models.DB.Not([]int{1, 2, 3, 4}).First(&user) //where id not in (1,2,3,4)
//models.DB.Select("user", "age").First(&user) //select user,age from user
models.DB.Select([]string{"user", "age"}).First(&user) //select user,age from user

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注