|
|
@@ -51,21 +51,29 @@ func defaultCallback(result map[string]any, columnName string) OnParsedFieldTagF
|
|
|
case reflect.Bool:
|
|
|
return reflectutils.AssignBoolValue(resultValue, entityFieldElemValue)
|
|
|
case reflect.String:
|
|
|
- strValue := resultValue.(string)
|
|
|
+ strValue, ok := resultValue.(string)
|
|
|
+ if ok {
|
|
|
+ // 实体字段是字符串类型,接收到的是数据库时间格式
|
|
|
+ parsedTime, err := parseTimeStringResult(strValue)
|
|
|
+ if err == nil {
|
|
|
+ // 转换成功说明是时间字符串
|
|
|
+ strValue = parsedTime.Format(tag.ParseTime)
|
|
|
+ }
|
|
|
+
|
|
|
+ parsedValue, err := dealStringResultValue(strValue, tag)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
- // 实体字段是字符串类型,接收到的是数据库时间格式
|
|
|
- parsedTime, err := parseTimeStringResult(strValue)
|
|
|
- if err == nil {
|
|
|
- // 转换成功说明是时间字符串
|
|
|
- strValue = parsedTime.Format(tag.ParseTime)
|
|
|
+ return reflectutils.AssignStringValue(parsedValue, entityFieldElemValue)
|
|
|
}
|
|
|
|
|
|
- parsedValue, err := dealStringResultValue(strValue, tag)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
+ timeResult, ok := resultValue.(time.Time)
|
|
|
+ if ok {
|
|
|
+ return reflectutils.AssignStringValue(timeResult.Format(tag.ParseTime), entityFieldElemValue)
|
|
|
}
|
|
|
|
|
|
- return reflectutils.AssignStringValue(parsedValue, entityFieldElemValue)
|
|
|
+ return errors.New("查询到的值无法赋值为string类型")
|
|
|
case reflect.Int64:
|
|
|
return reflectutils.AssignInt64Value(resultValue, entityFieldElemValue)
|
|
|
case reflect.Uint64:
|
|
|
@@ -75,7 +83,12 @@ func defaultCallback(result map[string]any, columnName string) OnParsedFieldTagF
|
|
|
case reflect.Struct:
|
|
|
// 实体字段是time.Time,接收到的是数据库时间格式
|
|
|
if reflectutils.IsValueTime(entityFieldElemValue) {
|
|
|
- parsedTime, err := parseTimeStringResult(resultValue.(string))
|
|
|
+ timeStr, ok := resultValue.(string)
|
|
|
+ if !ok {
|
|
|
+ return errors.New("数据库查询类型不是时间字符串")
|
|
|
+ }
|
|
|
+
|
|
|
+ parsedTime, err := parseTimeStringResult(timeStr)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|