文章目录
九 创建博客模型和DAO
创建模型
model\model.go:
type Post struct {
gorm.Model
Title string
Content string `gorm:"type:text"`
Tag string
}
model\model.go中添加博客相关结构体
创建DAO
package dao
import (
"blog/model"
"log"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Manager interface {
RegisterUser(user *model.User)
Login(username string) model.User
// 博客操作
AddPost(post *model.Post) // 添加博客
GetAllPost() []model.Post // 获取多个博客
GetPost(pid int) model.Post // 获取单个博客
}
type manager struct {
db *gorm.DB
}
var Mgr Manager
func init() {
dsn := "root:960690@tcp(127.0.0.1:3306)/golang_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
})
if err != nil {
log.Fatal("Failed to init db:", err)
}
Mgr = &manager{
db: db}
db.AutoMigrate(&model.User{
})
db.AutoMigrate(&model.Post{
})
}
func (mgr *manager) RegisterUser(user *model.User) {
mgr.db.Create(user)
}
func (mgr *manager) Login(username string) model.User {
var user model.User
mgr.db.Where("username=?", username).First(&user)
return user
}
// 博客操作
func (mgr *manager) AddPost(post *model.Post) {
mgr.db.Create(post)
}
func (mgr *manager) GetAllPost() []model.Post {
var posts = make([]model.Post, 10)
mgr.db.Find(&posts)
return posts
}
func (mgr *manager) GetPost(pid int) model.Post {
var post model.Post
mgr.db.First(&post, pid)
return post
}
添加了博客相关方法
// 博客操作 AddPost(post *model.Post) // 添加博客 GetAllPost() []model.Post // 获取多个博客 GetPost(pid int) model.Post // 获取单个博客
测试
-
go run main.go
-
数据库中查看是否创建博客相关的表
十 创建博客控制器和路由
创建控制器
// 操作博客
// 获取博客列表
func