Gorm框架学习
GORM
Gorm概述 "GORM" 是一个用于 Go 编程语言的对象关系映射(Object-Relational Mapping,ORM)库,用于简化数据库操作和数据模型的管理。它的全名是 "Go Object Relational Mapping",它提供了一种方便的方式来在 Go 代码中定义数据模型和数据库表之间的映射关系,从而使开发人员能够使用面向对象的方式进行数据库操作,而不必直接编写 SQL 查询语句。
G:G语言
O:对象
R:关系
M:映射
ORM优缺点
优点:
1、提高开发效率
缺点:
1、牺牲执行性能
2、牺牲灵活性
3、弱化SQL能力
GORM的使用
安装GORM
go get -u github.com/jinzhu/gorm
连接数据库
连接不同的数据库需要导入不同的驱动程序
连接mysql
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
func main() {
db, _ := gorm.Open("mysql", "user:password@(localhost:3306)/dbname?charset=utf8mb4&parseTime=True")
defer db.Close()
}
接下来我们创建一个数据库
create database gormtest;
接下来用gorm创建数据库
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type UserInfo struct {
ID uint
Name string
Gender string
}
func main() {
db, err := gorm.Open("mysql", "root:123456@(localhost:3306)/gormtest?charset=utf8mb4&parseTime=True")
if err != nil { // 数据库连接失败
panic(err)
}
defer db.Close() // 延迟关闭
db.AutoMigrate(UserInfo{}) // 创建表
}
此时我们查看mysql
创建记录
p1 := UserInfo{
ID: 1,
Name: "zhangsan",
Gender: "男",
}
db.Create(&p1)
这里我们注意,Create接受的是一个指针
......
GORM操作数据库还是挺简单的,我觉得应该关注这几个点
就是,不管是First查询表的第一个数据还是Where查询等等,只要是查询操作,他们的返回值是是什么?查询过程出错怎么判断,没查询到数据怎么判断?
首先我们看First查询
注意,此时我们数据库是没有数据的,First的返回值是一个结构体DB,Error不为空,Error的值是没有找到数据,所以我们应该像图中代码这样处理错误,那我们看看其他查询方式是不是也类似。
我们进入到源码当中发现Find,First的返回值一样,那么他们的返回值处理应该是一样的就在这不过多赘述。
我们现在聊聊Where条件查询的返回值
Where 方法的返回值通常是一个查询链式操作的对象,允许你在构建查询时进行链式操作,最终使用查询方法来获取实际的查询结果。如下
此时,随着我们业务的开发,一个数据库中会出现多张表,我们应该怎恶魔指定在特定的表的查询?
我们直接用相应的指针类型接收即可。 今天的分享就到这。