美文网首页Go
Mix-go 使用gorm基础查询

Mix-go 使用gorm基础查询

作者: Super淳语 | 来源:发表于2021-09-13 17:26 被阅读0次
查询
func (u UserDao) GetList(c *gin.Context) {

    var Users []models.User
    var result models.User

    user, _ := di.Gorm().Limit(2).Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id = ?",1).Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id in (?)", []int{1, 2}).Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id like ?", "%12%").Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id = ? and name = ?", 1, "test12").Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where(&models.User{Id: 1, Name: "test12"}).Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id > ?",28).Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id = ?", 1).Or("id = ?", 2).Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Where("id = ?", 1).Where("name = ?", "test12").Select("id,name,age,ct").Find(&Users).Rows()
    //user, _ := di.Gorm().Offset(3).Select("id,name,age,ct").Find(&Users).Rows()

    // Raw SQL
    //di.Gorm().Raw("SELECT id, name, age, ct FROM user limit 2").Scan(&Users)

    for user.Next() {
        err := user.Scan(&result.Id, &result.Name, &result.Age, &result.Ct)
        if err != nil {
            return
        }
    }

    c.JSON(http.StatusOK, gin.H{
        "data":    Users,
        "status":  http.StatusOK,
        "message": "success",
    })

}


更新
func (u UserDao) UpdateAll(c *gin.Context) {

    //err := di.Gorm().Model(&result).Where("id = ?", 1).Updates(models.User{
    //  Name: "test12",
    //  Age:  21,
    //}).Error

    //err := di.Gorm().Raw("UPDATE `user` SET `name`='test12'").Scan(&Users).Error
    err := di.Gorm().Raw("UPDATE `user` SET `age`=age + 1  WHERE id = 1").Scan(&Users).Error
    //err := di.Gorm().Model(&result).Where("id = ?", 1).UpdateColumn("age",gorm.Expr("age + ?",1)).Scan(&Users).Error

    if err != nil {
        fmt.Println(err)
    }
}
删除
func (u UserDao) DeleteInfo(c *gin.Context) {

    err := di.Gorm().Where("id = ?", 29).Delete(&Users).Error

    if err != nil {
        fmt.Println(err)
    }
}
创建
func (u UserDao) Create(c *gin.Context) {

    var User = &models.User{
        Name: "test12",
        Age:  28,
        Ct:   int(time.Now().Unix()),
    }

    err := di.Gorm().Create(&User).Error

    if err != nil {

        c.JSON(http.StatusOK, gin.H{
            "status":  http.StatusOK,
            "message": err.Error(),
        })
        return
    }

    c.JSON(http.StatusOK, gin.H{
        "status":  http.StatusOK,
        "message": "hello, world!",
        "id":      User.Id,
    })

}
事务操作
// Affairs 事务操作
func (u UserDao) Affairs(c *gin.Context) {

    tx := di.Gorm().Begin()

    defer func() {
        if r := recover(); r != nil {
            tx.Rollback()
        }
    }()

    if tx.Error != nil {

        c.JSON(http.StatusOK, gin.H{
            "status":  http.StatusOK,
            "message": tx.Error.Error(),
        })
        return
    }

    var User = &models.User{
        Name: "test12",
        Age:  28,
        Ct:   int(time.Now().Unix()),
    }

    if err := tx.Create(&User).Error; err != nil {

        fmt.Println(err)
        tx.Rollback()
        c.JSON(http.StatusOK, gin.H{
            "status":  http.StatusOK,
            "message": tx.Error.Error(),
        })
        return
    }

    tx.Commit()
    c.JSON(http.StatusOK, gin.H{
        "status":  http.StatusOK,
        "message": "hello, world!",
        "id":      User.Id,
    })

}

相关文章

网友评论

    本文标题:Mix-go 使用gorm基础查询

    本文链接:https://www.haomeiwen.com/subject/uqmfgltx.html