【Golang】gorm快速入门
推荐个人主页:席万里的个人空间
1、什么是orm?为什么用orm?
ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁
ORM的方法论基于三个核心原则:
- 简单:以最基本的形式建模数据
- 传达性:数据库结构被任何人都能理解的语言文档化
- 精确性:基于数据模型创建正确标准化了的结构
2、gorm连接以及使用
初始化gorm:
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
连接本地的mysql数据库,实现一些基本的增删改查功能
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"time"
)
func main() {
dsn := "root:123456@tcp(127.0.0.1:3306)/gorm_test?charset=utf8mb4&parseTime=True&loc=Local"
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Info, // Log level
Colorful: true, // Disable color
},
)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: newLogger,
})
if err != nil {
panic(err)
}
//设置全局的logger,在每次执行sql时都会打印sql语句
_ = db.AutoMigrate(&User{})
//创建一条记录
db.Create(&User{Name: "jinzhu", Age: 18})
//查询一条记录
var user User
db.First(&user, 1) // 查询id为1的product
db.First(&user, "name = ?", "jinzhu") // 查询code为l1212的product
//更新一条记录
db.Model(&user).Update("Age", 20)
//删除一条记录
db.Delete(&user, 1)
}
type User struct {
ID int
Name string
Age int
}