介绍
gorm是golang的一个ORM库,GORM 官方支持的数据库类型有:MySQL, PostgreSQL, SQLite, SQL Server 和 TiDB,下面是用gorm做的几个增删改查的简单实例.
连接MYSQL
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" //user表示数据库账户,pass表示数据库账户的密码,dbname表示选择哪一个数据库
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}
连接PostgreSQL
import (
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func main() {
dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
}
自定义驱动
GORM 允许通过 DriverName 选项自定义 PostgreSQL 驱动,例如:
import (
_ "github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/postgres"
"gorm.io/gorm"
)
func main() {
db, err := gorm.Open(postgres.New(postgres.Config{
DriverName: "cloudsqlpostgres",
DSN: "host=project:region:instance user=postgres dbname=postgres password=password sslmode=disable",
})
}
gorm查询数据
下面的示例将数据库里面所有的数据都添加到了a这个切片里面,后续需要数据操控a这个变量就行了
type Article struct {
Id int
Name string
Title string
Content string
Collect int
Like int
Comment int
CreateTime string
}
func main() {
var a []Article
err := DB.Table(dbname).Find(&a)
// select * from dbname
if err != nil {
errors.New("查询错误")
}
}
gorm删除数据
假如我要删除一个id为20的数据
func main() {
var a Article
// 假设a的id为20
db.Table(dbname).Delete(&a)
// delete from dbname where id = 20
}
gorm新增数据
func main() {
var a Article
db.Table(dbname).Save(&a)
// insert values dbname into (...)
}
gorm更改数据
func main() {
var a Article
db.Table(dbname).Updates(map[string]interface{}{
"需要修改的字段名": "更改的字段值"
})
}
总结
总的来说gorm的操作相对来说还是比较容易理解的,如果想了解更多的用法,可以查看官网示例.