使用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](https://i-blog.csdnimg.cn/blog_migrate/955c66bbf74323346c3418a076db9211.png)