gorm:新增数据、封装DB初步、结合Gin实现查询API

本文介绍了如何使用GORM在Go中进行数据新增,并展示了在Gin框架内创建简单的API查询。同时,探讨了数据库操作的初步封装,包括路由配置和DAO层的方法设计。

新增数据

	db, _ := gorm.Open("mysql", "root:root@/test?charset=utf8mb4&parseTime=True&loc=Local")
	defer db.Close()
	// 打开日志日志,查看执行的sql
	db.LogMode(true)

	// 新增数据
	news := model.NewsModel{Title:"新闻标题4",Content:"新闻内容4"}
	affectedRow := db.Table("news").Create(&news).RowsAffected

	fmt.Println("受影响函数:",affectedRow)	//打印:受影响函数: 1
	// 新增数据的ID
	fmt.Println(news.Id)	//打印:4

news表插入一条。

在gin框架中实现简单的api查询

package dao

import (
	"github.com/gin-gonic/gin"
	"github.com/jinzhu/gorm"
	"live.go.com/model"
)

//获取新闻详细
func GetNewsDetail(ctx *gin.Context) {
	db, _ := gorm.Open("mysql", "root:root@/test?charset=utf8mb4&parseTime=True&loc=Local")
	defer db.Close()
	// 打开日志日志,查看执行的sql
	db.LogMode(true)

	// 获取路由参数
	newsId := ctx.Param("news_id")
	// 开始查询数据
	news := model.NewsModel{}
	db.Table("news").Find(&news, newsId)

	// 返回json
	ctx.JSON(200, news)
}

路由如何调用?

package main

import (
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
	"live.go.com/dao"
)

func main() {
	// 默认路由对象
	router := gin.Default()

	// 新闻路由分组
	newsRouter := router.Group("/news")
	{
		// 获取某条新闻
		newsRouter.GET("/:news_id",dao.GetNewsDetail)
	}

	// 默认启动的是8080端口
	router.Run()
}

在这里插入图片描述

封装 db初步

新建db/MyDB.go

package db

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
	"log"
)

var DBHelper *gorm.DB
var err error

//初始化函数,引入包会自动执行
func init() {
	// 连接数据库
	DBHelper, err = gorm.Open("mysql", "root:root@/test?charset=utf8mb4&parseTime=True&loc=Local")
	if err != nil {
		log.Fatal(err)
	}
	// 开启log日志
	DBHelper.LogMode(true)
}

然后dao层的GetNewsDetail()方法就可以使用我们封装的db

func GetNewsDetail(ctx *gin.Context) {
	// 获取路由参数
	newsId := ctx.Param("news_id")
	// 开始查询数据
	news := model.NewsModel{}
	db.DBHelper.Table("news").Find(&news, newsId)
	// 返回json
	ctx.JSON(200, news)

	//db.DBHelper.Close()	//思考:这里
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值