|
|
@@ -70,20 +70,26 @@ type SqlResultColumn struct {
|
|
|
ResultColumnName string
|
|
|
Callback bool
|
|
|
|
|
|
+ // 原字段的反射结构
|
|
|
+ OriginFieldType reflect.Type
|
|
|
+ OriginFieldValue reflect.Value
|
|
|
+
|
|
|
// 值类型的反射结构
|
|
|
- FieldType reflect.Type
|
|
|
- FieldValue reflect.Value
|
|
|
+ ValueFieldType reflect.Type
|
|
|
+ ValueFieldValue reflect.Value
|
|
|
}
|
|
|
|
|
|
func parseSqlResultColumn(field reflect.StructField, fieldValue reflect.Value) (*SqlResultColumn, error) {
|
|
|
- fieldType := field.Type
|
|
|
- if fieldType.Kind() == reflect.Ptr {
|
|
|
- fieldType = fieldType.Elem()
|
|
|
+ valueFieldType := field.Type
|
|
|
+ valueFieldValue := fieldValue
|
|
|
+
|
|
|
+ if valueFieldType.Kind() == reflect.Ptr {
|
|
|
+ valueFieldType = valueFieldType.Elem()
|
|
|
|
|
|
- if fieldValue.IsZero() {
|
|
|
- fieldValue = reflect.Zero(fieldType)
|
|
|
+ if valueFieldValue.IsZero() {
|
|
|
+ valueFieldValue = reflect.Zero(valueFieldType)
|
|
|
} else {
|
|
|
- fieldValue = fieldValue.Elem()
|
|
|
+ valueFieldValue = fieldValue.Elem()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -91,8 +97,10 @@ func parseSqlResultColumn(field reflect.StructField, fieldValue reflect.Value) (
|
|
|
Name: strcase.ToSnake(field.Name),
|
|
|
ResultColumnName: strcase.ToSnake(field.Name),
|
|
|
Callback: false,
|
|
|
- FieldType: fieldType,
|
|
|
- FieldValue: fieldValue,
|
|
|
+ OriginFieldType: field.Type,
|
|
|
+ OriginFieldValue: fieldValue,
|
|
|
+ ValueFieldType: valueFieldType,
|
|
|
+ ValueFieldValue: valueFieldValue,
|
|
|
}
|
|
|
|
|
|
sqlResultTag, ok := field.Tag.Lookup(sqlResultTagKey)
|