千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 详解gorm打印sql语句

详解gorm打印sql语句

来源:千锋教育
发布人:xqq
时间: 2023-11-22 20:37:59 1700656679

一、启用gorm的打印sql功能

默认情况下,gorm并没有开启打印sql功能。在使用gorm的过程中,有时我们需要查看gorm真正执行的sql语句,这时我们就需要开启gorm的打印sql功能。我们可以通过gorm提供的LogMode方法来开启、关闭打印sql功能。当打印sql功能开启时,gorm会将真实执行的sql语句打印到控制台中。


//开启打印sql功能
db.LogMode(true)
//关闭打印sql功能
db.LogMode(false)

在这里,我们首先需要打开数据库连接,然后通过设置LogMode方法来开启、关闭打印sql功能。开启打印sql功能后,我们可以看到控制台中显示的sql语句,这样我们就可以更好地了解gorm执行的sql语句。

二、打印sql语句的格式

我们可以通过gorm提供的Debug方法来打印sql语句,这样我们就可以更好地调试gorm的相关功能。当我们使用Debug方法来打印sql语句时,gorm会按照一定的格式来打印sql语句,方便我们在控制台中查看。

gorm打印sql语句的格式如下:


[2019-05-09 22:15:25]  [LogPrefix]  [Level]  [message]  [args]

各个字段的含义如下:

[2019-05-09 22:15:25]:时间戳,表示打印sql语句的时间。 [LogPrefix]:日志前缀,表示打印sql语句所属的模块。 [Level]:日志级别,表示打印sql语句的级别。可取值有error,warning,info等。 [message]:打印的sql语句。 [args]:sql语句的参数列表。

通过以上信息,我们可以更好地理解gorm打印sql语句的格式。

三、打印sql语句的条件查询

条件查询是gorm中常见的一种查询方式。在条件查询中,我们通常需要打印执行的sql语句,以方便我们更好地理解和调试代码。下面给出一个示例:


func main() {
    db, err := gorm.Open("mysql", "user:password@(127.0.0.1:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
      panic(err)
    }
    defer db.Close()
    db.LogMode(true) // 打印日志

    var users []User
    db.Where("age > ?", 30).Find(&users) // 条件查询

    // 通过gorm提供的Debug方法来打印sql语句
    db.Debug().Where("age > ?", 30).Find(&users)
}

在这个示例中,我们可以看到我们通过db.Where("age > ?", 30).Find(&users)来进行条件查询。在执行该语句时,我们可以通过打印sql语句来了解gorm所执行的sql语句。

四、打印sql语句的更新操作

更新操作是数据库中常见的一种操作,gorm中也提供了更新的相关操作。在执行更新操作时,我们也可以通过打印sql语句来了解gorm所执行的sql语句。下面给出一个示例:


func main() {
    db, err := gorm.Open("mysql", "user:password@(127.0.0.1:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
      panic(err)
    }
    defer db.Close()
    db.LogMode(true) // 打印日志

    // 更新操作
    db.Model(&user).Where("name = ?", "jinzhu").Update("age", 18)

    // 通过gorm提供的Debug方法来打印sql语句
    db.Debug().Model(&user).Where("name = ?", "jinzhu").Update("age", 18)
}

在这个示例中,我们可以看到我们通过db.Model(&user).Where("name = ?", "jinzhu").Update("age", 18)来进行更新操作。在执行该语句时,我们也可以通过打印sql语句来了解gorm所执行的sql语句。

五、打印sql语句的删除操作

删除操作是数据库中常见的一种操作,gorm中也提供了删除的相关操作。在执行删除操作时,我们也可以通过打印sql语句来了解gorm所执行的sql语句。下面给出一个示例:


func main() {
    db, err := gorm.Open("mysql", "user:password@(127.0.0.1:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
      panic(err)
    }
    defer db.Close()
    db.LogMode(true) // 打印日志

    // 删除操作
    db.Where("age = ?", 20).Delete(&user)

    // 通过gorm提供的Debug方法来打印sql语句
    db.Debug().Where("age = ?", 20).Delete(&user)
}

在这个示例中,我们可以看到我们通过db.Where("age = ?", 20).Delete(&user)来进行删除操作。在执行该语句时,我们也可以通过打印sql语句来了解gorm所执行的sql语句。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT