// 获取默认配置的数据库对象(配置名称为"default")
db := g.DB()
in
查询
使用字符串、 slice
参数类型。当使用 slice
参数类型时,预处理占位符只需要一个 ?
即可。
// SELECT * FROM user WHERE uid IN(100,10000,90000)
db.Model("user").Where("uid IN(?,?,?)", 100, 10000, 90000).All()
db.Model("user").Where("uid", g.Slice{100, 10000, 90000}).All()
// SELECT * FROM user WHERE gender=1 AND uid IN(100,10000,90000)
db.Model("user").Where("gender=? AND uid IN(?)", 1, g.Slice{100, 10000, 90000}).All()
// SELECT COUNT(*) FROM user WHERE age in(18,50)
db.Model("user").Where("age IN(?,?)", 18, 50).Count()
db.Model("user").Where("age", g.Slice{18, 50}).Count()
使用任意 map
参数类型。
// SELECT * FROM user WHERE gender=1 AND uid IN(100,10000,90000)
db.Model("user").Where(g.Map{
"gender" : 1,
"uid" : g.Slice{100,10000,90000},
}).All()
使用 struct
参数类型,注意查询条件的顺序和 struct
的属性定义顺序有关。
type User struct {
Id []int `orm:"uid"`
Gender int `orm:"gender"`
}
// SELECT * FROM `user` WHERE uid IN(100,10000,90000) AND gender=1
db.Model("user").Where(User{
"gender" : 1,
"uid" : []int{100, 10000, 90000},
}).All()
为提高易用性,当传递的 slice
参数为空或 nil
时,查询并不会报错,而是转换为一个 false
条件语句。
// SELECT * FROM `user` WHERE 0=1
db.Model("user").Where("uid", g.Slice{}).All()
db.Model("user").Where("uid", nil).All()