struct参数输入

Data/Where/WherePri/And/Or方法支持任意的string/map/slice/struct/*struct数据类型参数,该特性为gdb提供了很高的灵活性。当使用struct/*struct对象作为输入参数时,将会被自动解析为map类型,只有struct公开属性能够被转换,并且支持 orm/gconv/json 标签,用于定义转换后的键名,即与表字段的映射关系。

例如:

  1. type User struct {
  2. Uid int `orm:"user_id"`
  3. Name string `orm:"user_name"`
  4. NickName string `orm:"nick_name"`
  5. }
  6. // 或者
  7. type User struct {
  8. Uid int `gconv:"user_id"`
  9. Name string `gconv:"user_name"`
  10. NickName string `gconv:"nick_name"`
  11. }
  12. // 或者
  13. type User struct {
  14. Uid int `json:"user_id"`
  15. Name string `json:"user_name"`
  16. NickName string `json:"nick_name"`
  17. }

其中,struct的属性应该是公开属性(首字母大写),orm标签对应的是数据表的字段名称。表字段的对应关系标签既可以使用orm,也可以用gconv,还可以使用传统的json标签,但是当三种标签都存在时,orm标签的优先级更高。为避免将struct对象转换为JSON数据格式返回时与JSON编码标签冲突,推荐使用orm标签来实现数据库ORM的映射关系。更详细的转换规则请查看【gconv.Map转换】章节。