Gin GORM 查询语句和原生SQL的使用
package admin
import (
"gindemo15/models"
"github.com/gin-gonic/gin"
)
//测试的结构体
type NavJson struct {
Id int `json:"id"`
Title string `json:"title"`
}
//测试的结构体:指定表名称
func (NavJson) TableName() string {
return "nav"
}
type NavController struct {
BaseController
}
func (con NavController) Index(c *gin.Context) {
查询全部数据
navList := []models.Nav{}
models.DB.Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
查询一条数据
navResult := models.Nav{Id: 21}
models.DB.Find(&navResult)
c.JSON(200, gin.H{
"result": navResult,
})
/*
Where条件
=
<
>
<=
>=
!=
IS NOT NULL
IS NULL
BETWEEN AND
NOT BETWEEN AND
IN
OR
AND
NOT
LIKE
*/
查询Id大于3的数据
navList := []models.Nav{}
models.DB.Where("id>3").Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
查询 id大于3 并且 id小于9的数据
var a = 3
var b = 9
navList := []models.Nav{}
models.DB.Where("id>? AND id<?", a, b).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
使用in查询 id 在 3, 5, 6中的数据
navList := []models.Nav{}
models.DB.Where("id in (?)", []int{3, 5, 6}).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
使用like查询标题里面包含 会 的内容
var str ="%织%"
navList := []models.Nav{}
models.DB.Where("title like ?", str).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
查询 id在3和9之间的数据 使用 between and
navList := []models.Nav{}
models.DB.Where("id between ? and ?", 3, 9).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
Or 查询id=2 或者 id=3的数据
navList := []models.Nav{}
models.DB.Where("id =? OR id =?", 2, 3).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
Or 查询id=2 或者 id=3 或者 id=4的数据
navList := []models.Nav{}
models.DB.Where("id =?", 2).Or("id = ?", 3).Or("id = ?", 4).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
使用Select指定返回的字段
navList := []NavJson{}//定义要返回的结构体
models.DB.Select("id,title").Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
Order排序 、Limit 、Offset
id倒序排序desc,升序使用asc
navList := []models.Nav{}
models.DB.Order("id desc").Order("sort asc").Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
navList := []models.Nav{}
//Limit(2):只获取前两条
models.DB.Order("id desc").Order("sort asc").Limit(2).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
分页:跳过2条
navList := []models.Nav{}
models.DB.Order("id desc").Offset(2).Limit(2).Find(&navList)
c.JSON(200, gin.H{
"result": navList,
})
Count 统计总数
navList := []models.Nav{}
var num int64
models.DB.Find(&navList).Count(&num)
c.JSON(200, gin.H{
"result": num,
})
使用原生 sql 删除 user 表中的一条数据
models.DB.Exec("delete from user where id=?", 5)
使用原生 sql 修改 user 表中的一条数据
models.DB.Exec("update user set username='itying gin grom' where id=?", 6)
使用原生 sql查询 uid=2 的数据
userList := []models.User{}
models.DB.Raw("select * from user where id >2").Scan(&userList)
c.JSON(200, gin.H{
"result": userList,
})
使用原生 查询 User 表中所有的数据
userList := []models.User{}
models.DB.Raw("select * from user").Scan(&userList)
c.JSON(200, gin.H{
"result": userList,
})
统计 user 表的数量
var num int
models.DB.Raw("select count(1) from user").Scan(&num)
c.JSON(200, gin.H{
"result": num,
})
c.String(200, "Nav Index")
}