Go Web——简单blog项目(三)

本文档详述了使用Go语言构建一个简单的blog项目的步骤,包括创建博客模型和DAO、实现博客控制器和路由、添加博客功能、展示博客列表以及详细展示博客。涉及到的关键技术有Golang、前端和MySQL数据库。
摘要由CSDN通过智能技术生成


九 创建博客模型和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 // 获取单个博客

测试

  1. go run main.go

  2. 数据库中查看是否创建博客相关的表
    在这里插入图片描述

十 创建博客控制器和路由

创建控制器

// 操作博客
// 获取博客列表
func 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值