go语言之路

gorm的使用

gorm的使用

什么是orm?

对象关系映射,把面向对象的概念与关系型数据库中表的概念对应起来。

拿Go语言为例,struct就相当于数据库中的表,struct中的字段就相当于表中的属性。

不需要再使用sql语句,而是通过面向对象的思想,与类或结构体关联起来。

下文来自gorm官方文档,根据个人理解进行改编,并使用了连接池。

安装

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

快速入门

package initalization

import (

    "fmt"

    "github.com/nj-jay/gorm/model"

    "github.com/spf13/viper"

    "gorm.io/driver/mysql"

    "gorm.io/gorm"

    "os"

    "strings"

)

func GormMysql() *gorm.DB {

    viper.SetConfigName("config")

    viper.SetConfigType("toml")

    viper.AddConfigPath("./conf")

    err := viper.ReadInConfig()

    if err != nil {

        fmt.Println("read error")

        os.Exit(0)

    }

    username := viper.GetString("mysql.username")

    password := viper.GetString("mysql.password")

    ip := viper.GetString("mysql.ip")

    port := viper.GetString("mysql.port")

    database := viper.GetString("mysql.database")

    path := strings.Join([]string{username, ":", password,
        "@(", ip, ":", port, ")/", database, "?charset=utf8&parseTime=true&loc=Local"}, "")

    if db, err := gorm.Open(mysql.Open(path), &gorm.Config{}); err != nil {

        os.Exit(0)

        return nil

    } else {

        sqlDB, _ := db.DB()

        sqlDB.SetMaxIdleConns(10)

        sqlDB.SetMaxOpenConns(100)

        return db

    }

}

func MysqlTables(db *gorm.DB) {

    err := db.AutoMigrate(

        &model.User{},

        )

    if err != nil {

        fmt.Println("register table error")

    }
}
package global

import "gorm.io/gorm"

var (

    GMD_DB *gorm.DB

)
package model

type User struct {

    ID uint

    Name string

    Age int

    Birthday string

}
package service

import (
    "fmt"
    "github.com/nj-jay/gorm/global"
    "github.com/nj-jay/gorm/model"
)

//添加
func Add() {

    user := model.User{Name: "Jinzhu", Age: 18, Birthday: "2000.06.19"}

    global.GMD_DB.Create(&user)

}

//删除
func Delete() {

    global.GMD_DB.Delete(&model.User{}, 10)

}

//更新
func Upgrade() {

    var user model.User

    global.GMD_DB.Model(&model.User{}).Where("name=?", "nj-jay").Update("name", "hello")

    global.GMD_DB.Where("id=?", 6).First(&user)

    fmt.Println(user)

}

//查询
func Query() {

    var user model.User

    global.GMD_DB.First(&user)

    fmt.Println("============first=============")

    fmt.Println(user)

    fmt.Println("=============all==============")

    var users []model.User

    global.GMD_DB.Find(&users)

    fmt.Println(users)

    fmt.Println("==========WHERE===========")

    global.GMD_DB.Where("name=?", "nj-jay").Find(&users)

    fmt.Println(users)

}

jwt权限认证

上一篇

漂流记

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

个人微信公众号

we-tuiguang

qq交流群

群号:1046260719

微信扫一扫

微信扫一扫