sql_mapping.go 662 B

12345678910111213141516171819202122232425262728293031
  1. package sql_mapping
  2. import (
  3. "git.sxidc.com/go-tools/utils/reflectutils"
  4. "github.com/pkg/errors"
  5. "reflect"
  6. )
  7. type OnParsedFieldTagFunc func(fieldName string, entityFieldElemValue reflect.Value, tag *Tag) error
  8. func UseTag(e any, onParsedFieldTagFunc OnParsedFieldTagFunc) error {
  9. if e == nil {
  10. return nil
  11. }
  12. entityValue := reflect.ValueOf(e)
  13. // 类型校验
  14. if !reflectutils.IsValueStructOrStructPointer(entityValue) {
  15. return errors.New("参数不是结构或结构指针")
  16. }
  17. entityElemValue := reflectutils.PointerValueElem(entityValue)
  18. err := parseTag(entityElemValue, onParsedFieldTagFunc)
  19. if err != nil {
  20. return err
  21. }
  22. return nil
  23. }