第十篇:结合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

第一种写法使用占位符

 

 

 

 第二种写法模型方式

 

posted @ 2020-06-24 16:06  痞子胥  阅读(269)  评论(0)    收藏  举报