反射实现简单映射
概念说明
ORM 常需要把结构体字段映射成数据库字段。
反射可以在运行时读取结构体字段名和 tag,从而生成通用映射逻辑。
下面示例只是帮助理解思想。
真实 ORM 还会处理 SQL 构造、类型转换、关联关系、事务等大量细节。
语法/规则
- 使用结构体 tag 描述字段映射名。
- 通过
reflect.TypeOf读取字段元信息。 - 通过
reflect.ValueOf读取字段值。 - 遍历字段时跳过未导出或无效字段。
- 简化示例只适合理解反射思想,不应直接当作生产 ORM 使用。
简单映射示例
| |
输出结果:
| |
常见错误
- 把学习示例直接当作完整 ORM 使用,忽略类型转换和 SQL 安全问题。
- 没有处理指针结构体,传入
&User{}时会因为 Kind 不匹配出错。 - 读取未导出字段的值,可能触发 panic。
- 以为 tag 会自动生成映射,实际必须由代码读取并处理。