QueryTable接口
One:一条数据
-
qs.Filter(“name__exact”,“Zhiliao”).One(&stu)
-
指定显示的字段
-
qs.Filter(“name__exact”,“Zhiliao”).One(&stu,“name”,“age”)
Filter:包含条件
-
多个 Filter 之间使用 AND 连接
-
qs.Filter(“profile__isnull”, true).Filter(“name”, “slene”)
-
类sql: WHERE NOT profile_id IS NULL AND name = ‘slene’
All:所有数据
-
返回对应的结果集对象
-
默认最大行数为 1000
-
user_arr := []models.UserStruct{}
-
qs.Filter(“name__exact”,“Zhiliao”).All(&user_arr)
-
指定显示的字段
-
qs.Filter(“name__exact”,“Zhiliao”).All(&user_arr,“name”,“age”)
Exclude:排除条件
-
Exclude 之间使用 AND 连接
-
使用 NOT 排除条件
-
qs.Exclude(“profile__isnull”, true).Filter(“name”, “slene”)
Limit:限制最大返回数据行数
-
第二个可选参数可以设置Offset,意思从什么位置开始查询
-
qs.Limit(10, 20)
-
LIMIT 10 OFFSET 20 注意跟 SQL 反过来的
-
beego中limit的使用:qs.Limit(2,1).All(&user_arr)
-
sql的limit:limit 0,2; 从第0个数据开始,查询两条数据
Offset:设置 偏移行数,意思从什么位置开始查询
-
qs.Offset(20)
-
beego中使用:qs.Filter(“name__isnull”,false).Offset(1).All(&user_arr)
-
角标从0开始,代表第一条数据
GroupBy:分组
-
根据“By”指定的规则对数据进行分组
-
beego中使用GroupBy:qs.GroupBy(“age”).All(&user_arr)
-
sql:SELECT SUM(age) FROM `user` GROUP BY addr
-
group by 必须放在 order by 和 limit之前
OrderBy:排序
-
参数使用 expr
-
ASC升序,字段名前面没有- :qs.OrderBy(“age” ) 默认的
-
DESC降序,字段名前面有- :qs.OrderBy("-age" )
-
根据多个字段排序,用逗号隔开: qs.OrderBy("-age" ,“name”)
-
qs.OrderBy("-age").All(&user_arr)
Distinct:去重,没有参数
-
根据指定字段去重,需要在all方法中指定字段,否则根据所有字段去重
-
beego中的使用:qs.Distinct().All(&user_arr,“name”,“age”,“addr”)
-
sql:SELECT DISTINCT addr, age,name FROM `user`
Count:统计个数,没有参数,后面不能跟查询条数的方法
-
num, err := qs.Filter(“name__isnull”,false).Count()
-
统计的个数
-
错误信息
-
sql:SELECT COUNT(*) FROM `user`;
Exist:是否存在,没有参数,后面不能跟查询条数的方法
-
exict := qs.Filter(“name__isnull”,false).Exist()
-
返回true或false
Update:更新
-
依据当前查询条件,进行批量更新操作
-
num, err := o.QueryTable(“user”).Filter(“name”, “slene”).Update(orm.Params{
“name”: “astaxie”,
})
- 返回更新的条数和错误信息
Delete:删除
-
依据当前查询条件,进行批量删除操作
-
num, err := o.QueryTable(“user”).Filter(“name”, “slene”).Delete()
-
返回删除的条数和错误信息