前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO语言基础之gorm操作MySQL的查询

GO语言基础之gorm操作MySQL的查询

原创
作者头像
墨紫羽墨
发布2022-03-16 18:59:01
1.8K0
发布2022-03-16 18:59:01
举报
文章被收录于专栏:FutureTester

数据库的连接上一篇已经写了,这部分就直接开始查询数据了

1、按主键查询数据

代码语言:javascript
复制
func firstUserbase() {
	// 按主键排序,查询第一条
	client := sqlDb()
	ub := &Userbase{}
	err := client.First(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:这个是按主键ID排序查询的

2、不指定排序字段,查询一条数据

代码语言:javascript
复制
func takeUserbase() {
	// 不指定排序,查询一条
	client := sqlDb()
	ub := &Userbase{}
	err := client.Take(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

3、按主键排序,查询最后一条数据

代码语言:javascript
复制
func lastUserbase() {
	// 按主键排序,查询最后一条
	client := sqlDb()
	ub := &Userbase{}
	err := client.Last(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

4、根据主键查询

代码语言:javascript
复制
func firstUserbaseById() {
	// 按主键查询,仅适用于主键是数值类型
	client := sqlDb()
	ub := &Userbase{}
	err := client.First(&ub, 1187918).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

5、按条件查询

代码语言:javascript
复制
func firstUserbaseByUserName() {
	// 按条件查询,获取一条记录
	client := sqlDb()
	ub := &Userbase{}
	err := client.Where("USER_NAME = ?", "qwer0626").First(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

6、按条件查询,查询多条数据

代码语言:go
复制
func findUserbaseByClientVar() {
	// 按条件查询,获取多条记录
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where("CLIENT_VER = ?", "7.8.030504").Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

7、按条件查询 IN

代码语言:javascript
复制
func findUserbaseIn() {
	// 按条件查询,获取多条记录
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where("USER_NAME in (?)", []string{"qwer0625", "qwer0626"}).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

8、按条件查询 like

代码语言:javascript
复制
func findUserbaseLike() {
	// 按条件查询,获取多条记录
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where("USER_NAME like ?", "%r0626").Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

9、按条件查询,and

代码语言:javascript
复制
func findUserbaseAnd() {
	// 按条件查询,and
	client := sqlDb()
	ub := &[]Userbase{}
	nowtime := time.Now()
	afterTime := time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 9, 0, 0, 0, nowtime.Location())
	err := client.Where("USER_NAME like ? AND LOGIN_DATE > ?", "%0626", afterTime).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

10、按条件查询 > 大于,< 小于

代码语言:javascript
复制
func findUserbaseByLoginDate() {
	// 根据日期查询
	client := sqlDb()
	ub := &[]Userbase{}
	nowtime := time.Now()
	afterTime := time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 9, 0, 0, 0, nowtime.Location())
	err := client.Where(" LOGIN_DATE > ? AND LOGIN_DATE < ?", afterTime, nowtime).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

11、按条件查询,limit限制

代码语言:javascript
复制
func findUserbaseByLoginDateLimit() {
	// limit限制
	client := sqlDb()
	ub := &[]Userbase{}
	nowtime := time.Now()
	afterTime := time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 9, 0, 0, 0, nowtime.Location())
	err := client.Where(" LOGIN_DATE > ? AND LOGIN_DATE < ?", afterTime, nowtime).Limit(5).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

12、按条件查询,between and

代码语言:javascript
复制
func findUserbaseBetween() {
	// between and
	client := sqlDb()
	ub := &[]Userbase{}
	nowtime := time.Now()
	afterTime := time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 9, 0, 0, 0, nowtime.Location())
	err := client.Where(" LOGIN_DATE BETWEEN ? AND ?", afterTime, nowtime).Limit(5).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

13、查询条件是struct

代码语言:javascript
复制
func findUserbaseByStruct() {
	// 查询条件是struct
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where(&Userbase{UserId: 1187918, UserName: "qwer0626"}).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

14、查询条件有0

代码语言:javascript
复制
func findUserbaseByStructZero() {
	// 查询条件有0
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where(&Userbase{UserId: 0, UserName: "qwer0626"}).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

15、查询条件是指针

代码语言:javascript
复制
func findUserbaseByStructNil() {
	// 查询条件是指针
	client := sqlDb()
	ub := &[]Userbase{}
	cli := ""
	err := client.Where(&Userbase{UserName: "qwer0626", ClientVar: &cli}).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

16、查询条件是map

代码语言:javascript
复制
func findUserbaseByMap() {
	// 查询条件是map
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where(map[string]interface{}{"USER_ID": 1187918, "USER_NAME": "qwer0626"}).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

17、查询条件 or

代码语言:javascript
复制
func findUserbaseOr() {
	// 查询条件 or
	client := sqlDb()
	ub := &[]Userbase{}
	// err := client.Where("USER_NAME = ? OR USER_ID = ?", "qwer0625", 1187918).Find(&ub).Error
	err := client.Where("USER_NAME = ? ").Or("USER_ID = ?", "qwer0625", 1187918).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

18、子查询

代码语言:javascript
复制

func findUserbaseExpr() {
	// 子查询
	client := sqlDb()
	ub := &[]Userbase{}
	sub := client.Table("userbase").Select("USER_NAME").Where("USER_ID = ?", 1187918).Find(&ub)
	err := client.Where("USER_NAME = (?) ", sub).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userbase:%+v", ub)
}

查询结果:

19、查询条件含order

代码语言:javascript
复制
func findUserbaseOrder() {
	// order
	client := sqlDb()
	ub := &[]Userbase{}
	err := client.Where("USER_NAME like ? ", "%0626").Order("LOGIN_DATE desc").Find(&ub).Error
	if err != nil {
		panic(err)
	}
	for _, v := range *ub {
		fmt.Printf("userbase: %+v \n", v)
	}
}

查询结果:

20、scan

代码语言:javascript
复制
func findUserbaseScan() {
	// scan
	client := sqlDb()
	var ub Userbase
	err := client.Model(&Userbase{}).Where("USER_ID = ? ", 1187918).Scan(&ub).Error
	if err != nil {
		panic(err)
	}

	fmt.Printf("userbase: %+v \n", ub)

}

查询结果:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、按主键查询数据
  • 2、不指定排序字段,查询一条数据
  • 3、按主键排序,查询最后一条数据
  • 4、根据主键查询
  • 5、按条件查询
  • 6、按条件查询,查询多条数据
  • 7、按条件查询 IN
  • 8、按条件查询 like
  • 9、按条件查询,and
  • 10、按条件查询 > 大于,< 小于
  • 11、按条件查询,limit限制
  • 12、按条件查询,between and
  • 13、查询条件是struct
  • 14、查询条件有0
  • 15、查询条件是指针
  • 16、查询条件是map
  • 17、查询条件 or
  • 18、子查询
  • 19、查询条件含order
  • 20、scan
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档