初学 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
}
结果展示
查询:
新增
再查询
修改
再查询
删除
再查询