소스 검색

修复Sql,SqlMapClient,SqlTemplateClient函数使用map[string]interface{}参数

xormplus 9 년 전
부모
커밋
943742e40c
1개의 변경된 파일18개의 추가작업 그리고 0개의 파일을 삭제
  1. 18 0
      session.go

+ 18 - 0
session.go

@@ -1396,6 +1396,24 @@ func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{})
 	}
 
 	if sliceValue.Kind() != reflect.Map {
+		if session.IsSqlFuc {
+			sql := session.Statement.RawSQL
+			params := session.Statement.RawParams
+			i := len(params)
+			if i == 1 {
+				vv := reflect.ValueOf(params[0])
+				if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
+					sqlStr = sql
+					args = params
+				} else {
+					sqlStr, args, _ = core.MapToSlice(sqlStr, params[0])
+				}
+			} else {
+				sqlStr = sql
+				args = params
+			}
+		}
+
 		return session.noCacheFind(sliceValue, sqlStr, args...)
 	}