comment Iterator public methods
This commit is contained in:
parent
99ebe8f165
commit
6aa911aae0
|
@ -45,14 +45,6 @@ type dialect interface {
|
||||||
GetIndexes(tableName string) (map[string]*Index, error)
|
GetIndexes(tableName string) (map[string]*Index, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Iterator struct {
|
|
||||||
session *Session
|
|
||||||
stmt *sql.Stmt
|
|
||||||
rows *sql.Rows
|
|
||||||
fields []string
|
|
||||||
beanType reflect.Type
|
|
||||||
}
|
|
||||||
|
|
||||||
type PK []interface{}
|
type PK []interface{}
|
||||||
|
|
||||||
// Engine is the major struct of xorm, it means a database manager.
|
// Engine is the major struct of xorm, it means a database manager.
|
||||||
|
|
11
iterator.go
11
iterator.go
|
@ -5,6 +5,14 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Iterator struct {
|
||||||
|
session *Session
|
||||||
|
stmt *sql.Stmt
|
||||||
|
rows *sql.Rows
|
||||||
|
fields []string
|
||||||
|
beanType reflect.Type
|
||||||
|
}
|
||||||
|
|
||||||
func newIterator(session *Session, bean interface{}) (*Iterator, error) {
|
func newIterator(session *Session, bean interface{}) (*Iterator, error) {
|
||||||
iterator := new(Iterator)
|
iterator := new(Iterator)
|
||||||
iterator.session = session
|
iterator.session = session
|
||||||
|
@ -55,6 +63,7 @@ func newIterator(session *Session, bean interface{}) (*Iterator, error) {
|
||||||
return iterator, nil
|
return iterator, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// iterate to next record and reuse passed bean obj
|
||||||
func (iterator *Iterator) NextReuse(bean interface{}) (interface{}, error) {
|
func (iterator *Iterator) NextReuse(bean interface{}) (interface{}, error) {
|
||||||
if iterator.rows != nil && iterator.rows.Next() {
|
if iterator.rows != nil && iterator.rows.Next() {
|
||||||
result, err := row2map(iterator.rows, iterator.fields) // !nashtsai! TODO remove row2map then scanMapIntoStruct conversation for better performance
|
result, err := row2map(iterator.rows, iterator.fields) // !nashtsai! TODO remove row2map then scanMapIntoStruct conversation for better performance
|
||||||
|
@ -70,11 +79,13 @@ func (iterator *Iterator) NextReuse(bean interface{}) (interface{}, error) {
|
||||||
return nil, sql.ErrNoRows
|
return nil, sql.ErrNoRows
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// iterate to next record
|
||||||
func (iterator *Iterator) Next() (interface{}, error) {
|
func (iterator *Iterator) Next() (interface{}, error) {
|
||||||
b := reflect.New(iterator.beanType).Interface()
|
b := reflect.New(iterator.beanType).Interface()
|
||||||
return iterator.NextReuse(b)
|
return iterator.NextReuse(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// close session if session.IsAutoClose is true, and claimed any opened resources
|
||||||
func (iterator *Iterator) Close() {
|
func (iterator *Iterator) Close() {
|
||||||
if iterator.session.IsAutoClose {
|
if iterator.session.IsAutoClose {
|
||||||
defer iterator.session.Close()
|
defer iterator.session.Close()
|
||||||
|
|
Loading…
Reference in New Issue