初学 go 入门-案例-教程-记录(15)gin + gorm 两个框架结合做一个简单的小案例(二)实现增删查改

244 阅读1分钟

初学 go 入门-案例-教程-记录(15)gin + gorm 两个框架结合做一个简单的小案例(二)实现增删查改

希望能写一些简单的教程和案例分享给需要的人
欢迎进qq群交流:546496965

我们之前接触了如何用搭建 webapi 框架 Gin blog.csdn.net/qq_36051316…

也接触了一些 使用gorm 的使用
blog.csdn.net/qq_36051316…

gin : github.com/gin-gonic/g…

目录展示

在这里插入图片描述

安装依赖

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlserver
go get -u github.com/gin-gonic/gin

完整代码

main.go

package main

import (
	"awesomeProject/dao"
	"awesomeProject/models"
	"awesomeProject/until"
	"github.com/gin-gonic/gin"
)

func init() {
	//初始化
	until.SqlClient()
}

func main() {
	r := gin.Default()

	// 获取全部数据
	r.GET("/Student/GetAll", func(c *gin.Context) {
		StudentDao := dao.NewStudentDao()
		students := StudentDao.FindAll()
		c.JSON(200, students)
	})

	// 新增数据
	r.POST("/Student/Add", func(c *gin.Context) {
		var student models.Student //注意该结构接受的内容
		c.ShouldBind(&student)
		StudentDao := dao.NewStudentDao()
		result := StudentDao.Add(student)
		c.JSON(200, result)
	})

	// 修改数据
	r.POST("/Student/Update", func(c *gin.Context) {
		var student models.Student //注意该结构接受的内容
		c.ShouldBind(&student)
		StudentDao := dao.NewStudentDao()
		result := StudentDao.Update(student)
		c.JSON(200, result)
	})

	// 删除数据
	r.POST("/Student/Delete", func(c *gin.Context) {
		var student models.Student //注意该结构接受的内容
		c.ShouldBind(&student)
		StudentDao := dao.NewStudentDao()
		result := StudentDao.Delete(student)
		c.JSON(200, result)
	})
	// 如果是直接 r.Run() , 端口是默认 8080
	r.Run(":10001")
}

student_dao.go

package dao

import (
	"awesomeProject/models"
	"awesomeProject/until"
)

type StudentDao struct {
}

func NewStudentDao() *StudentDao {
	return &StudentDao{}
}

func (StudentDao) FindAll() []models.Student {
	var students []models.Student
	// 查询表数据
	until.SqlDB.Find(&students)
	return students
}

func (StudentDao) Add(student models.Student ) int64 {
	result := until.SqlDB.Create(&student)
	return result.RowsAffected
}

func (StudentDao) Update(student models.Student ) int64 {
	result := until.SqlDB.Save(&student)
	return result.RowsAffected
}

func (StudentDao) Delete(student models.Student ) int64 {
	result := until.SqlDB.Delete(&models.Student{}, student.Id)
	return result.RowsAffected
}

student.go

package models

type Student struct {
	Id int
	Name string
	Gender int
}

func (Student) TableName() string {
	return "Student"
}

gormClient.go

package until

import (
	"gorm.io/driver/sqlserver"
	"gorm.io/gorm"
	"reflect"
)

/**
 * @Description:全局 DB
 */

var (
	SqlDB *gorm.DB
)

/**
 * @Description: 初始化数据库
 * @return *gorm.DB
 */

func SqlClient() *gorm.DB {
	if SqlDB == nil || reflect.DeepEqual(SqlDB, gorm.DB{}) {
		_Sql_db, err := gorm.Open(sqlserver.Open("sqlserver://cuyan:123456@120.79.19.125:1433?database=cuyan"), &gorm.Config{})
		if err != nil {
			panic("failed to connect database")
		}
		SqlDB = _Sql_db
		return _Sql_db
	}
	return SqlDB
}

结果展示

查询:
在这里插入图片描述
新增
在这里插入图片描述
再查询

在这里插入图片描述
修改

在这里插入图片描述
再查询

在这里插入图片描述
删除

在这里插入图片描述
再查询

在这里插入图片描述