Fix get
This commit is contained in:
parent
9e396cdd9c
commit
4c1dd2884e
|
@ -173,7 +173,12 @@ func (session *Session) nocacheGet(beanKind reflect.Kind, table *schemas.Table,
|
||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return true, session.scan(rows, table, beanKind, beans, types, fields)
|
if err := session.scan(rows, table, beanKind, beans, types, fields); err != nil {
|
||||||
|
return true, err
|
||||||
|
}
|
||||||
|
rows.Close()
|
||||||
|
|
||||||
|
return true, session.executeProcessors()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *Session) scan(rows *core.Rows, table *schemas.Table, firstBeanKind reflect.Kind, beans []interface{}, types []*sql.ColumnType, fields []string) error {
|
func (session *Session) scan(rows *core.Rows, table *schemas.Table, firstBeanKind reflect.Kind, beans []interface{}, types []*sql.ColumnType, fields []string) error {
|
||||||
|
@ -184,7 +189,14 @@ func (session *Session) scan(rows *core.Rows, table *schemas.Table, firstBeanKin
|
||||||
if !isScannableStruct(bean, len(types)) {
|
if !isScannableStruct(bean, len(types)) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
return session.getStruct(rows, types, fields, table, bean)
|
scanResults, err := session.row2Slice(rows, fields, types, bean)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
dataStruct := utils.ReflectValue(bean)
|
||||||
|
_, err = session.slice2Bean(scanResults, fields, bean, &dataStruct, table)
|
||||||
|
return err
|
||||||
case reflect.Slice:
|
case reflect.Slice:
|
||||||
return session.getSlice(rows, types, fields, bean)
|
return session.getSlice(rows, types, fields, bean)
|
||||||
case reflect.Map:
|
case reflect.Map:
|
||||||
|
@ -268,21 +280,6 @@ func (session *Session) getMap(rows *core.Rows, types []*sql.ColumnType, fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *Session) getStruct(rows *core.Rows, types []*sql.ColumnType, fields []string, table *schemas.Table, bean interface{}) error {
|
|
||||||
scanResults, err := session.row2Slice(rows, fields, types, bean)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
dataStruct := utils.ReflectValue(bean)
|
|
||||||
_, err = session.slice2Bean(scanResults, fields, bean, &dataStruct, table)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return session.executeProcessors()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (session *Session) cacheGet(bean interface{}, sqlStr string, args ...interface{}) (has bool, err error) {
|
func (session *Session) cacheGet(bean interface{}, sqlStr string, args ...interface{}) (has bool, err error) {
|
||||||
// if has no reftable, then don't use cache currently
|
// if has no reftable, then don't use cache currently
|
||||||
if !session.canCache() {
|
if !session.canCache() {
|
||||||
|
|
Loading…
Reference in New Issue