首页 > 数据库 >在gorm中查询数据库

在gorm中查询数据库

时间:2023-02-04 22:45:33浏览次数:79  
标签:err fmt DB 查询数据库 go gorm size

这是一个系列的文章,上一篇的地址:

上一篇

现在我们来看看如何查询某一条数据。例如现在我想查询数据库中是否存在一个名为“灰太狼”的人,那么就可以这么写代码:

package main

import "fmt"

type Student struct {
	ID     uint   `gorm:"size:10"`
	Name   string `gorm:"size:16"`
	Age    int    `gorm:"size:3"`
	Gender bool
	Email  *string `gorm:"size:128"`
}

func main() {
	var student Student
	err := DB.Take(&student, "name = ?", "灰太狼").Error
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println(student.Email)
	}
}

注意,上述的代码已经不在connection.go中了,我新开了一个文件,名叫SingleTable.go,上面的代码是写在SingleTable.go中的。现在目录结构看起来这样:

你可能想问,那么现在connection.go中的代码长啥样呢?长这样:

package main

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

var DB *gorm.DB

var mysqlLogger logger.Interface

func init() {
	username := "root"
	password := "xhw200116long3"
	host := "127.0.0.1"
	port := 3306
	Dbname := "gorm"
	timeout := "10s"

	//日志操作相关
	mysqlLogger = logger.Default.LogMode(logger.Info)

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout)
	//skip后面那个东西是跳过更新删除等,这样可以获得性能的提升
	//官方文档:https://gorm.cn/docs/index.html
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		SkipDefaultTransaction: true,
		Logger:                 mysqlLogger,
	})
	//连接失败
	if err != nil {
		panic("连接数据库失败, error=" + err.Error())
	}
	//连接成功
	DB = db
	fmt.Println(DB)
}

你可能还想问,如何运行上面刚开始那个go文件呢,目前我只有一种办法:按住ctrl,然后同时选中connection.go和SingleTable.go,然后右键,再点击运行。

可以看到运行结果如下:

也就是说我们查到了这条数据,它是真实存在的。

所以现在问题来了,为什么这条数据存在呢?我甚至从来都没有向表中插入过数据啊!

有意思,其实我是插入过数据的,不过我忘记怎么写插入数据的代码了,各位看官不如自己慢慢去别处查吧。

 

 

开个玩笑,插入数据的代码如下:

package main

import "fmt"

type Student struct {
	ID     uint   `gorm:"size:10"`
	Name   string `gorm:"size:16"`
	Age    int    `gorm:"size:3"`
	Gender bool
	Email  *string `gorm:"size:128"`
}

func main() {
	email := "[email protected]"
	var s1 = Student{
		Name:   "灰太狼",
		Age:    24,
		Gender: true,
		Email:  &email,
	}
	err := DB.Create(&s1).Error
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("插入数据成功!")
	}
}

大功告成。

 

 

还记得我们最开始的查询方法吗?其实查询方法远不止那一种,还有很多,下面再列举至少一个:

 

标签:err,fmt,DB,查询数据库,go,gorm,size
From: https://www.cnblogs.com/EvanTheGreat/p/17092559.html

相关文章

  • gorm启动
    最近在研究gorm,一起来看看吧!首先我们在创建一个数据库。我是在MySQL上创建了一个名叫gorm的数据库,如下图所示:然后,我们尝试在项目中与这个数据库取得联系。在GoLand上......
  • 客服系统即时通讯IM开发(六)Glang Gorm 执行原生Sql语句增删改查封装库【唯一客服】网站
    在开发在线客服系统的时候,有某些地方需要使用脚本去批量执行SQL语句,这个时候就需要使用简单的执行SQL的封装函数了查询操作是使用的原生的sql库,没用Gorm,原因是Gorm的RawS......
  • 关于Flex Cairngorm中command层与View层的通信及耦合度高的问题的解决
    在Cairngorm框架中,view层发送自定义事件,command层再根据事件做相应的处理,View层中的数据通过绑定ModelLocator中的属性实现自动更新。现有的问题是,有时除了更新数据意外,用户......
  • sqlite3 cli 快速查询数据库内容
    原文链接https://www.digitalocean.com/community/tutorials/how-to-install-and-use-sqlite-on-ubuntu-20-04sudoaptupdatesudoaptinstallsqlite3sqlite3--versi......
  • GORM笔记
    参考文档:GORM指南|GORM-ThefantasticORMlibraryforGolang,aimstobedeveloperfriendly.GORM入门指南|李文周的博客(liwenzhou.com)GORMCRUD指南|李......
  • Gorm源码学习-创建行记录
    1.前言Gorm源码学习系列Gorm源码学习-数据库连接此文是Gorm源码学习系列的第二篇,主要梳理下通过Gorm创建表的流程。 2.创建行记录代码示例gorm提供了以下几个接......
  • 使用gorm创建表时设置表备注信息
    查了一圈都没有找到建表时添加备注信息的方法,查看gorm文档后发现,gorm确实没有提供设置表备注的方法但是在文档里面找到这个,直接改改就能用了  //检查表是否存在 if!......
  • GORM快速入门
    Gorm(Go-orm框架)ThefantasticORMlibraryforGolangaimstobedeveloperfriendly.(Go语言对开发者最友好的ORM框架。)gorm是一个使用Go语言编写的ORM框架。它文档......
  • golang gorm使用
     gorm链式操作:MethodChaining,Gorm实现了链式操作接口,所以你可以把代码写成这样: //创建一个查询tx:=db.Where("name=?","jinzhu")//添加更多条件ifso......
  • go-gorm语法
    GORM指南https://gorm.io/zh_CN/docs/goget-ugorm.io/gormgoget-ugorm.io/driver/sqlitego常见错误github.com/mattn/go-sqlite3cgo:execgcc:exec:"gcc"......