In method now can receive slice for first params

This commit is contained in:
Lunny Xiao 2014-05-06 15:16:23 +08:00
parent 05f86478a8
commit f55b4f9c0f
1 changed files with 15 additions and 3 deletions

View File

@ -670,10 +670,22 @@ func (statement *Statement) getInc() map[string]incrParam {
// Generate "Where column IN (?) " statment
func (statement *Statement) In(column string, args ...interface{}) *Statement {
k := strings.ToLower(column)
if _, ok := statement.inColumns[k]; ok {
statement.inColumns[k].args = append(statement.inColumns[k].args, args...)
var newargs []interface{}
if len(args) == 1 &&
reflect.TypeOf(args[0]).Kind() == reflect.Slice {
newargs = make([]interface{}, 0)
v := reflect.ValueOf(args[0])
for i := 0; i < v.Len(); i++ {
newargs = append(newargs, v.Index(i).Interface())
}
} else {
statement.inColumns[k] = &inParam{column, args}
newargs = args
}
if _, ok := statement.inColumns[k]; ok {
statement.inColumns[k].args = append(statement.inColumns[k].args, newargs...)
} else {
statement.inColumns[k] = &inParam{column, newargs}
}
return statement
}