第十篇:结合Model进行数据映射/查询的基本要点
一:创建模型
仔细看文档
http://gorm.io/docs/models.html
忘记了就查,没必要背,说不定下个月公司就换别的ORM框架了
假设我们有个帖子类别表 topic_class
字段为:
1:class_id int 自增
2:class_name 类别名 varchaar(50) 不能为空
3:class_remark 类别说明 text
建议字段命名为:业务表名_业务名
有了表 如何跟模型进行映射尼?
把表名翻译成模型即:
type TopicClass struct{
ClassId int
ClassName string
ClassRemark string
}
模型映射的表的字段首字母大写(如果又下划线,去掉下划线,下划线紧跟的首字母也大写),这种 写法是由有默认规则的;
这样就可以了吗?
新建模型:

main函数进行调用

我们接下来看看到底执行什么sql
查询sql执行的语句为:
db.LogMode(true)//启用Logger,显示详细日志

在我们的gorm中会把表默认加复数
表名规则:
(1):首先加上db.LogMode(true)来显示日志
(2):表名规则根据struct名称改成小写,并加上复数形式,譬如struct名为:
a:Test,对应表名为tests
b:TopicClass,表名为topic_classes(注意复数,英文基础,ch sh x 结尾时 加es 变复数)
c:对于字段 大家可以发现TopicId对应的就是字段topic_id
d:可以使用db.SingularTable(true)来使struct对应的表不加复数或者使用指定表名的方式db.Table("表名")
如果有些表字段没有 按照下划线规则设计而struct却使用了下划线规则,比如表topic_class 新添加字段classtype
而struct TopicClass中使用ClassType 这时候就需要添加tag 标记 表明字段ClassType 是映射到表的classtype 而不是映射默认的规则class_type
根据主键查询且仅支持int 类型 如下


取出一条数据


取出一堆数据 要定义一个切片

接下来 看where
第一种写法使用占位符

第二种写法模型方式


浙公网安备 33010602011771号