这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记
什么是ORM
Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库
它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
ORM优缺点
优点
- 提高开发效率
缺点
- 牺牲执行性能
- 牺牲灵活性
- 弱化SQL能力
GORM
gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。
官方中文文档
安装
go get -u github.com/jinzhu/gorm
连接数据库
连接不同的数据库都需要导入对应数据的驱动程序,GORM 已经为我们包装一些驱动程序,只需要按如下方式导入需要的数据库驱动即可:
import _ "github.com/jinzhu/gorm/dialects/mysql"
mysql 简单连接
func main() {
// 连接数据库
db, err := gorm.Open("mysql", "root:123456@(127.0.0.1:3306)/go_sql?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
}
mysql 驱动程序提供了高级配置可以在初始化过程中使用
func main() {
//ORM框架是让数据库的表结构变成代码定义的数据结构(golang里的结构体的结构)从而做到,代码结构即为数据库结构,代码行为即为数据库行为。
db, _ := gorm.Open(mysql.New(mysql.Config{
DSN: "root:123456@(127.0.0.1:3306)/go_sql?charset=utf8mb4&parseTime=True&loc=Local",
DefaultStringSize: 171,
}), &gorm.Config{
SkipDefaultTransaction: false,
//NamingStrategy: schema.NamingStrategy{
// TablePrefix: "maka_", // 表名前缀,`User` 的表将是 `t_users`
// SingularTable: true, //使用单数表名,“用户”表将是“用户”启用此选项
// NoLowerCase: true, // 跳过名称的snake_casing
//},
DisableForeignKeyConstraintWhenMigrating: true, // 逻辑外键(代码里面自动外键外键关系)
})
}