2、ginBlog 配置数据库、数据模型

使用Gorm 数据库驱动

# 文档地址
http://gorm.io/zh_CN/docs/

# 安装
go get -u github.com/jinzhu/gorm

model目录下创建模型

# User 表
╰─➤  cat model/User.go 
package model

import "github.com/jinzhu/gorm"

type User struct {
        gorm.Model
        Username string `gorm:"type:varchar(20);not null" json:"username"`
        Password string `gorm:"type:varchar(20);not null" json:"password"`
        Role int `gorm:"type:int" json:"role"`
}                                    


# Article 表
╰─➤  cat model/Article.go 
package model

import "github.com/jinzhu/gorm"

type Article struct {
        Category Category
        gorm.Model
        Title string  `gorm:"type:varchar(100);not null" json:"title"`
        Cid int `gorm:"type:int;not nll" json:"cid"`
        Desc string `gorm:"type:varchar(500)" json:"desc"`
        Content string `gorm:"type:longtext" json:"content"`
        Img string `gorm:"type:varchar(100)" json:"img"`
}


#  Category 表
╰─➤  cat model/Category.go 
package model

import "github.com/jinzhu/gorm"

type Category struct {
        gorm.Model
        Name string `gorm:"type:varchar(20);not null" json:"name"`
}

配置MySQL 链接驱动

╰─➤  cat model/db.go 
package model

import (
        "fmt"
        "ginBlog/utils"
        _ "github.com/go-sql-driver/mysql"
        "github.com/jinzhu/gorm"
        "time"
)

var db *gorm.DB
var err error

func InitDB()  {
        db, err = gorm.Open(utils.DbType, fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",
                utils.DbUser,
                utils.DbPassword,
                utils.DbHost,
                utils.DbPort,
                utils.DbName,
                ))
        if err != nil {
                fmt.Println("链接数据库失败,检查数据库是否Running: ", err)
        }

        // 全局禁用默认表名的复数形式
        db.SingularTable(true)

        // 自动创建表和缺失的列
        db.AutoMigrate(&User{}, &Article{}, &Category{})

        // 设置连接池中的最大闲置连接数
        db.DB().SetMaxIdleConns(10)

        // 设置数据库的最大连接数
        db.DB().SetMaxOpenConns(200)

        // 设置链接的最大可复用时间
        db.DB().SetConnMaxLifetime(10 * time.Second)

        defer db.Close()
}


main 入口文件注入mysql

╰─➤  cat main.go 
package main

import (
        "ginBlog/model"
        "ginBlog/routers"
)

func main() {
        // 引用数据库
        model.InitDB()

        routers.InitRouter()
}

运行查看,是否自动创建了数据库表

go run main.go

image

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值