GORM高级查询

摘要:
Nav)/*1,其中条件=&lt=[]models.Nav{}models.DB.Where(“id>n”)。Find(&amp,3)。Or(“id=4”)。Find(&aamp,url”)。查找(&amp:models.DB.Table(“user”)。选择(“avg(age)”)。SubQuery())。查找;

GORM高级查询第1张

models

nav.go

package models

type Nav struct {
	Id     int    `json:"id"`
	Title  string `json:"title"`
	Url    string `json:"url"`
	Status int    `json:"status"`
	Sort   int    `json:"sort"`
}

func (n Nav) TableName() string {
	return "nav"
}

controllers

nav.go

package controllers

import (
	"beegogorm/models"

	"github.com/astaxie/beego"
)

type NavController struct {
	beego.Controller
}

func (c *NavController) Get() {

	// 查询全部数据
	nav := []models.Nav{} // nav实例,查询的数据是集合
	models.DB.Find(&nav)  // &nav 把查到的数据赋值给nav

	// 查询一条数据
	nav := models.Nav{Id: 3} // 获取Id等于3的数据
	models.DB.Find(&nav)

	/*
		1、Where条件
		=
		<
		>
		<=
		>=
		!=
		IS NOT NULL
		IS NULL
		BETWEEN AND
		NOT BETWEEN AND
		IN
		OR
		AND
		NOT
		LIKE
	*/
	// 查询id大于3的数据
	nav := []models.Nav{}
	models.DB.Where("id<3").Find(&nav)

	// 查询id大于5的数据
	var n = 5
	nav := []models.Nav{}
	models.DB.Where("id>?", n).Find(&nav) // 动态的数据使用占位符

	var n1 = 3
	var n2 = 9
	nav := []models.Nav{}
	models.DB.Where("id > ? AND id < ?", n1, n2).Find(&nav)

	// 查询id等于3 5 6的数据
	nav := []models.Nav{}
	models.DB.Where("id in (?)", []int{3, 5, 6}).Find(&nav)

	// 查询标题有 会 的数据
	nav := []models.Nav{}
	models.DB.Where("title like ?", "%会%").Find(&nav)

	// 查询id在什么之间
	nav := []models.Nav{}
	models.DB.Where("id between ? and ?", 3, 6).Find(&nav)

	/*
		2、Or 条件
	*/
	nav := []models.Nav{}
	models.DB.Where("id=? OR id=?", 2, 3).Find(&nav)
	// 另一种写法
	nav := []models.Nav{}
	models.DB.Where("id=?", 2).Or("id=?", 3).Or("id=4").Find(&nav)

	/*
		3、选择字段查询
	*/
	nav := []models.Nav{}
	models.DB.Select("id, title, url").Find(&nav)

	/*
		4、SubQuery 子查询
		models.DB.Table("user").Select("avg(age)").SubQuery()
	*/
	user := []models.User{}
	// 先查出平均年龄 models.DB.Table("user").Select("avg(age)").SubQuery()
	// 在当做参数传给问号
	// 在Find一下
	models.DB.Where("age<?", models.DB.Table("user").Select("avg(age)").SubQuery()).Find(&user)
	c.Data["json"] = user
	c.ServeJSON()

	/*
		5、排序 Limit 、Offset

	*/
	nav := []models.Nav{}
	// id Asc 按照id进行升序排序
	// desc 降序
	models.DB.Where("id>2").Order("id Asc").Find(&nav)

	nav := []models.Nav{}
	models.DB.Where("id>2").Order("sort Desc").Order("id Asc").Find(&nav)
	
	// 只要前面两条
	nav := []models.Nav{}
	models.DB.Where("id>1").Limit(2).Find(&nav)

	// 跳过2条查询2条
	nav := []models.Nav{}
	models.DB.Where("id>1").Offset(2).Limit(2).Find(&nav)
	
	/*
		6、总数
	*/
	// 分页时用到
	nav := []models.Nav{}
	var num int
	models.DB.Where("id > ?", 2).Find(&nav).Count(&num)

	c.Data["json"] = num
	c.ServeJSON()

	// 上面每一个nav,都需要封装和返回,只写一个在这
	c.Data["json"] = nav // 封装json
	c.ServeJSON()        // 返回json

}

  

  

免责声明:文章转载自《GORM高级查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇嵌入式Linux问题总结(一) Ubuntu常用命令和编译问题解决方法C#对DataGridView进行添加、修改、删除数据操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pycharm常用功能

一、创建项目 1、使用 pycharm 新建一个项目 打开-->create new project--> 进入页面 pure python pure python 页面 location(地址):在哪个路径下创建项目,事先创建好一个文件夹“py31_class”,存放代码(使用英文创建文件夹,不要有特殊符号和空格) project inter...

MySQL 中&amp;lt;=&amp;gt;用法(长知识)

https://www.runoob.com/mysql/mysql-operator.html MySQL 运算符 本章节我们主要介绍 MySQL 的运算符及运算符的优先级。 MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算符包括: 运算符 作用 + 加法 - 减法...

bootstrap-table的一些基本使用及表内编辑的实现

最近工作需要接触了bootstrap-table 所以研究了一下,并做了笔记,红色位置要特别注意  前端主要使用了 jquery bootstrap-table  bootstrap-edittable  bootstrap-table-edittable.js   1)首页我们需要先引用css及js文件 <!---bootstrap使用的是3--&...

09mybatis属性和数据库字段不匹配处理

Book.java id name price book 表 book_id book_name book_price create table book( book_id int unsigned auto_increment, book_name varchar(20), book_price decimal(8,2), primary key(bo...

hbase1.3.1安装

下载:    hadoop@master:~$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz解压到/opt/Hadoop,    hadoop@master:~$ sudo tar -zxvf hbase-1.3.1-bin.tar.g...

教你如何更改android应用的包名

Android 源码自带了很多应用程序,想改个包名方便修改?很简单,两步搞定,以packages/apps/Settings为例: 1、打开AndroidManifest.xml,把 <manifest xmlns:android="http://schemas.android.com/apk/res/android "         androi...