使用QueryTable:
ORM 以 QuerySeter 来组织查询,每个返回 QuerySeter 的方法都会获得一个新的 QuerySeter 对象。
qs := o.QueryTable("user") 表名作为参数
-
exact / iexact:等于,默认值,大小写敏感 / 不敏感
-
qs.Filter("name__exact","Zhiliao").One(&stu) Filter / Exclude / Condition的默认参数
- where name = "Zhiliao" //where name = binary "Zhiliao"
-
qs.Filter("name__iexact","Zhiliao").One(&stu)
- WHERE name LIKE 'Zhiliao'
-
大小写敏感注意点:
-
大小写是否敏感取决于数据表使用的 collation
-
查询的时候需要加BINARY
-
-
-
contains / icontains:包含,大小写敏感 / 不敏感
-
qs.Filter("name__contains","Zhil").One(&stu)
- WHERE name LIKE BINARY '%Zhil%'
-
qs.Filter("name__icontains","Zhil").One(&stu)
- WHERE name LIKE '%Zhil%'
-
-
gt / gte:大于/大于等于
-
qs.Filter("age__gt",18).One(&stu)
-
qs.Filter("age__gte",18).One(&stu)
-
-
lt / lte:小于/小于等于
-
qs.Filter("age__lt",18).One(&stu)
-
qs.Filter("age__lte",18).One(&stu)
-
-
startswith / istartswith:以…起始,大小写敏感 / 不敏感
-
qs.Filter("name__startswith","Zh").One(&stu)
- WHERE name LIKE BINARY 'Zh%'
-
qs.Filter("name__istartswith","Zh").One(&stu)
- WHERE name LIKE 'Zh%'
-
-
endswith / iendswith:以…结束,大小写敏感 / 不敏感
-
qs.Filter("name__endswith","Liao").One(&stu)
- WHERE name LIKE BINARY '%Liao'
-
qs.Filter("name__iendswith","Liao").One(&stu)
- WHERE name LIKE '%Liao'
-
-
in:在某个范围中,值为不定长参数
-
qs.Filter("age__in",12,13,16,19).One(&stu)
-
ids:=[]int{17,18,19,20}
qs.Filter("age__in", ids)
-
-
isnull:为空,值为 true / false
- qs.Filter("gender__isnull",true).One(&stu)