[Gorm/SQL]结构体映射相关问题

2,675 阅读1分钟

官方文档过于简洁,以至于出错的时候也不知道是哪里的问题

表名和结构体如何映射

在创建数据库链接的时候,提供的信息仅限于数据库。Gorm如何能将表结构和自定义的结构体进行映射

存在四种方法:

0.数据表映射规则:在Gorm中,表名是结构体名的复数形式(默认),列名是字段名的蛇形小写。实际上不满足这个规范也可以成功映射

1.通过db.SingularTable(true)方法全局禁用表名复数,此时表名默认为结构体首字母小写形式

2.通过实现TableName方法,为结构体加上TableName方法可以显式地返回自定义的数据表名,亦可以通过DefaultTableNameHandler来指定统一的项目表名

3.通过Table API显示声明:

db.Table("table_name").CreateTable(&YourStruct{})

4.字段映射规则:结构体的字段到数据表字段的默认映射规则是用下划线分隔每个大写字母开头的单词,即使上述规则都不遵守,也必须将结构体字段使用大写字母命名

这个坑了一下午,其实就是个字段首字母大写的问题,文档中也没有实例和说明