orm框架

gorm会默认给struct名称设置小写,并且加上复数形式

tc := &src.TopicClass{} //用orm去建表时驼峰个是你会用下划线隔开,所有TopicClass对应表为topic_class
db.First(tc,2) //只取topic_class查询结果第一条,后面的2是可选参数,加上表示取主键=2的数据集的第一条,结构体必须标注了主键才可以查询到结果,如下面classId
/*
type TopicClass struct {
    ClassId   int `gorm:"PRIMARY_KEY"`
    ClassName string
    ClassType string `gorm:"Column:classType"`
}
*/
db.classes("topic_class").First(tc) //指定表名字

![](https://xiahualou.oss-cn-shanghai.aliyuncs.com/img/20191219150926.png)db.LogMode(true) //打开输出,可以看到拼接的sql

db.SingularTable(true) //gorm会自动给表名加复数,可以设置使gorm在创建(查询)表时不加复数,如果为false则为topic_classes,下图topic_classes和topic_class分别为true和false的情况

image-20191203202832467

type TopicClass struct {
    ClassId   int `gorm:"PRIMARY_KEY"` //这里要加PRIMARY_KEY,否则db.First(tc,2) 这里会报错,因为gorm不知道哪个是主键
    ClassName string
    ClassType string `gorm:"Column:classType"` //默认是class_type但是数据库字段为classType,可以使用反射来标记字段
}
db.Where("class_name=?","技术类").find(tc) //查询class_name为技术类的数据
db.Where(&TopicClass{className:"技术类"}).find(tc) //查询class_name为技术类的数据
var tcs []TopicClass
db.Find(&tcs) // 表示取出所有数据

插入数据

insert_tc := &TopicClass{2,"九四班","强化班"}
fmt.Println(db.Create(insert_tc).RowsAffected)

gorm会默认给struct名称设置小写,并且加上复数形式

image-20191203202708585

tc := &src.TopicClass{} //用orm去建表时驼峰个是你会用下划线隔开,所有TopicClass对应表为topic_class
db.First(tc,2) //只取topic_class查询结果第一条,后面的2是可选参数,加上表示取主键=2的数据集的第一条,结构体必须标注了主键才可以查询到结果,如下面classId
/*
type TopicClass struct {
    ClassId   int `gorm:"PRIMARY_KEY"`
    ClassName string
    ClassType string `gorm:"Column:classType"`
}
*/
db.classes("topic_class").First(tc) //指定表名字

![](https://xiahualou.oss-cn-shanghai.aliyuncs.com/img/20191219150926.png)db.LogMode(true) //打开输出,可以看到拼接的sql

db.SingularTable(true) //gorm会自动给表名加复数,可以设置使gorm在创建(查询)表时不加复数,如果为false则为topic_classes,下图topic_classes和topic_class分别为true和false的情况

image-20191203202832467

type TopicClass struct {
    ClassId   int `gorm:"PRIMARY_KEY"` //这里要加PRIMARY_KEY,否则db.First(tc,2) 这里会报错,因为gorm不知道哪个是主键
    ClassName string
    ClassType string `gorm:"Column:classType"` //默认是class_type但是数据库字段为classType,可以使用反射来标记字段
}
db.Where("class_name=?","技术类").find(tc) //查询class_name为技术类的数据
db.Where(&TopicClass{className:"技术类"}).find(tc) //查询class_name为技术类的数据
var tcs []TopicClass
db.Find(&tcs) // 表示取出所有数据

插入数据

insert_tc := &TopicClass{2,"九四班","强化班"}
fmt.Println(db.Create(insert_tc).RowsAffected)




原文地址:https://www.cnblogs.com/hualou/p/12070800.html