mirror of https://github.com/go-gorm/gorm.git
Scan with Rows interface
This commit is contained in:
parent
6c827ff2e3
commit
9dd6ed9c65
|
@ -72,3 +72,13 @@ type Valuer interface {
|
||||||
type GetDBConnector interface {
|
type GetDBConnector interface {
|
||||||
GetDBConn() (*sql.DB, error)
|
GetDBConn() (*sql.DB, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rows rows interface
|
||||||
|
type Rows interface {
|
||||||
|
Columns() ([]string, error)
|
||||||
|
ColumnTypes() ([]*sql.ColumnType, error)
|
||||||
|
Next() bool
|
||||||
|
Scan(dest ...interface{}) error
|
||||||
|
Err() error
|
||||||
|
Close() error
|
||||||
|
}
|
||||||
|
|
4
scan.go
4
scan.go
|
@ -50,7 +50,7 @@ func scanIntoMap(mapValue map[string]interface{}, values []interface{}, columns
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *DB) scanIntoStruct(rows *sql.Rows, reflectValue reflect.Value, values []interface{}, fields []*schema.Field, joinFields [][2]*schema.Field) {
|
func (db *DB) scanIntoStruct(rows Rows, reflectValue reflect.Value, values []interface{}, fields []*schema.Field, joinFields [][2]*schema.Field) {
|
||||||
for idx, field := range fields {
|
for idx, field := range fields {
|
||||||
if field != nil {
|
if field != nil {
|
||||||
values[idx] = field.NewValuePool.Get()
|
values[idx] = field.NewValuePool.Get()
|
||||||
|
@ -99,7 +99,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Scan scan rows into db statement
|
// Scan scan rows into db statement
|
||||||
func Scan(rows *sql.Rows, db *DB, mode ScanMode) {
|
func Scan(rows Rows, db *DB, mode ScanMode) {
|
||||||
var (
|
var (
|
||||||
columns, _ = rows.Columns()
|
columns, _ = rows.Columns()
|
||||||
values = make([]interface{}, len(columns))
|
values = make([]interface{}, len(columns))
|
||||||
|
|
Loading…
Reference in New Issue