gorm简单入门

190 阅读1分钟

介绍

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的操作相对来说还是比较容易理解的,如果想了解更多的用法,可以查看官网示例.