multiple In() supports
This commit is contained in:
parent
82bdc0ec5a
commit
bb6a9c24fa
5545
base_test.go
5545
base_test.go
File diff suppressed because it is too large
Load Diff
40
session.go
40
session.go
|
@ -1015,6 +1015,9 @@ func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{})
|
||||||
if columnStr == "" {
|
if columnStr == "" {
|
||||||
columnStr = session.Statement.genColumnStr()
|
columnStr = session.Statement.genColumnStr()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
session.Statement.attachInSql()
|
||||||
|
|
||||||
sql = session.Statement.genSelectSql(columnStr)
|
sql = session.Statement.genSelectSql(columnStr)
|
||||||
args = append(session.Statement.Params, session.Statement.BeanArgs...)
|
args = append(session.Statement.Params, session.Statement.BeanArgs...)
|
||||||
} else {
|
} else {
|
||||||
|
@ -2508,7 +2511,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var sql string
|
var sql, inSql string
|
||||||
|
var inArgs []interface{}
|
||||||
if table.Version != "" && session.Statement.checkVersion {
|
if table.Version != "" && session.Statement.checkVersion {
|
||||||
if condition != "" {
|
if condition != "" {
|
||||||
condition = fmt.Sprintf("WHERE (%v) AND %v = ?", condition,
|
condition = fmt.Sprintf("WHERE (%v) AND %v = ?", condition,
|
||||||
|
@ -2516,6 +2520,15 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
||||||
} else {
|
} else {
|
||||||
condition = fmt.Sprintf("WHERE %v = ?", session.Engine.Quote(table.Version))
|
condition = fmt.Sprintf("WHERE %v = ?", session.Engine.Quote(table.Version))
|
||||||
}
|
}
|
||||||
|
inSql, inArgs = session.Statement.genInSql()
|
||||||
|
if len(inSql) > 0 {
|
||||||
|
if condition != "" {
|
||||||
|
condition += " AND " + inSql
|
||||||
|
} else {
|
||||||
|
condition = "WHERE " + inSql
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sql = fmt.Sprintf("UPDATE %v SET %v, %v %v",
|
sql = fmt.Sprintf("UPDATE %v SET %v, %v %v",
|
||||||
session.Engine.Quote(session.Statement.TableName()),
|
session.Engine.Quote(session.Statement.TableName()),
|
||||||
strings.Join(colNames, ", "),
|
strings.Join(colNames, ", "),
|
||||||
|
@ -2527,13 +2540,24 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
||||||
if condition != "" {
|
if condition != "" {
|
||||||
condition = "WHERE " + condition
|
condition = "WHERE " + condition
|
||||||
}
|
}
|
||||||
|
inSql, inArgs = session.Statement.genInSql()
|
||||||
|
if len(inSql) > 0 {
|
||||||
|
if condition != "" {
|
||||||
|
condition += " AND " + inSql
|
||||||
|
} else {
|
||||||
|
condition = "WHERE " + inSql
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sql = fmt.Sprintf("UPDATE %v SET %v %v",
|
sql = fmt.Sprintf("UPDATE %v SET %v %v",
|
||||||
session.Engine.Quote(session.Statement.TableName()),
|
session.Engine.Quote(session.Statement.TableName()),
|
||||||
strings.Join(colNames, ", "),
|
strings.Join(colNames, ", "),
|
||||||
condition)
|
condition)
|
||||||
}
|
}
|
||||||
|
|
||||||
args = append(append(args, st.Params...), condiArgs...)
|
args = append(args, st.Params...)
|
||||||
|
args = append(args, inArgs...)
|
||||||
|
args = append(args, condiArgs...)
|
||||||
|
|
||||||
res, err := session.exec(sql, args...)
|
res, err := session.exec(sql, args...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2660,10 +2684,18 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
|
||||||
if session.Statement.WhereStr != "" {
|
if session.Statement.WhereStr != "" {
|
||||||
condition = session.Statement.WhereStr
|
condition = session.Statement.WhereStr
|
||||||
if len(colNames) > 0 {
|
if len(colNames) > 0 {
|
||||||
condition += " and " + strings.Join(colNames, " and ")
|
condition += " AND " + strings.Join(colNames, " AND ")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
condition = strings.Join(colNames, " and ")
|
condition = strings.Join(colNames, " AND ")
|
||||||
|
}
|
||||||
|
inSql, inArgs := session.Statement.genInSql()
|
||||||
|
if len(inSql) > 0 {
|
||||||
|
if len(condition) > 0 {
|
||||||
|
condition += " AND "
|
||||||
|
}
|
||||||
|
condition += inSql
|
||||||
|
args = append(args, inArgs...)
|
||||||
}
|
}
|
||||||
if len(condition) == 0 {
|
if len(condition) == 0 {
|
||||||
return 0, ErrNeedDeletedCond
|
return 0, ErrNeedDeletedCond
|
||||||
|
|
917
statement.go
917
statement.go
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue