golang gorm实现get请求查询案例测试

目录
  • 案例
  • 查询班级get请求
  • 查询学生get请求

案例

package main
import (
   _ "github.com/go-sql-driver/mysql"
   "github.com/jinzhu/gorm"
   "github.com/gin-gonic/gin"
)
//班级-学生:一对多
type Class struct {
   gorm.Model
   ClassName string
   Students []Student   //班级有多个学生
}
//学生-学生卡:一对一
type Student struct {
   gorm.Model
   StudentName   string
   ClassID uint  //学生属于一个班级
   IDCard IDCard  // 一个学生只有一个学生卡
   Teachers []Teacher `gorm:"many2many:Student_Teacher;"` //一个学生有多个老师
}
type IDCard struct {
   gorm.Model
   StudentID uint  //一张卡只属于一个学生
   Money int  //卡里余额
}
//老师-学生:多对多
type Teacher struct {
   gorm.Model
   TeacherName string
   Students []Student `gorm:"many2many:Student_Teacher;"` //老师教多个学生
}
func main() {
   db, _ := gorm.Open("mysql", "root:admin123@/beego_test?charset=utf8&parseTime=True&loc=Local")
   db.AutoMigrate(&Class{},&Student{},&IDCard{},Teacher{})
   defer db.Close()
   // 测试数据
   //i := IDCard{
   // Money:99,
   //}
   //s := Student{
   // StudentName:"chary",
   // IDCard : i,
   //}
   //c := Class{
   // ClassName:"超神学院",
   // Students: []Student{s},
   //}
   //t := Teacher{
   // TeacherName:"雅典啦老师",
   // Students: []Student{s},
   //}
   //
   //_ = db.Create(&c).Error
   //_ = db.Create(&t).Error
   r:=gin.Default()
   r.POST("/student", func(c *gin.Context) {
       var student Student
       _ = c.BindJSON(&student)
       db.Create(&student)
   })
   r.GET("/student/:ID", func(c *gin.Context) {
      id := c.Param("ID")
      var student Student
      _ = c.BindJSON(&student)
      db.Preload("Teachers").Preload("IDCard").First(&student,"id=?",id)
      c.JSON(200,gin.H{
         "msg":student,
      })
   })
   r.GET("/class/:ID", func(c *gin.Context) {
      id := c.Param("ID")
      var class Class
      _ = c.BindJSON(&class)
      db.Preload("Students").Preload("Students.Teachers").First(&class,"id=?",id)

      c.JSON(200,gin.H{
         "msg":class,
      })
   })
   _ = r.Run(":8080")
}

查询班级get请求

查询学生get请求

以上就是golang gorm实现get请求查询案例测试的详细内容,更多关于golang gorm测试get请求查询的资料请关注我们其它相关文章!

(0)

相关推荐

  • 使用golang如何优雅的关机或重启操作示例

    目录 前言 优雅地关机 什么是优雅关机? 如何实现优雅关机? 优雅地重启 总结 前言 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 阅读本文需要了解一些UNIX系统中信号的概念,请提前查阅资料预习. 优雅地关机 什么是优雅关机? 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种

  • golang validator库参数校验实用技巧干货

    目录 validator库参数校验若干实用技巧 基本示例 翻译校验错误提示信息 自定义错误提示信息的字段名 自定义结构体校验方法 自定义字段校验方法 自定义翻译方法 validator库参数校验若干实用技巧 在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中定义与请求参数相对应的模型(结构体),借助模型绑定快捷地解析请求中的参数,例如 gin 框架中的Bind和ShouldBind系列方法.本文就以 gin 框架的请求参数校验为例,介绍一些validator库的实用技巧.

  • golang配置管理神器Viper使用教程

    目录 Viper 安装 什么是Viper? 为什么选择Viper? 把值存入Viper 建立默认值 读取配置文件 写入配置文件 监控并重新读取配置文件 从io.Reader读取配置 覆盖设置 注册和使用别名 使用环境变量 Env 示例: 使用Flags flag接口 远程Key/Value存储支持 远程Key/Value存储示例-未加密 etcd Consul Firestore 远程Key/Value存储示例-加密 监控etcd中的更改-未加密 从Viper获取值 访问嵌套的键 提取子树 反序

  • golang默认Logger日志库在项目中使用Zap日志库

    目录 在Go语言项目中使用Zap日志库介绍 默认的Go Logger日志库 实现Go Logger 设置Logger 使用Logger Logger的运行 Go Logger的优势和劣势 优势 劣势 Uber-go Zap日志库 为什么选择Uber-go zap 安装 配置Zap Logger Logger Sugared Logger 定制logger 将日志写入文件而不是终端 将JSON Encoder更改为普通的Log Encoder 更改时间编码并添加调用者详细信息 使用Lumberja

  • 使用Go语言实现配置文件热加载功能

    说到配置文件热加载,这个功能在很多框架中都提供了,如beego,实现的效果就是当你修改文件后,会把你修改后的配置重新加载到配置文件中,而不用重启程序,这个功能在日常中还是非常实用的,毕竟很多时候,线上的配置文件不是想改就能改的. 这次就自己实现一个配置文件的热加载功能的包,并通过一个简单的例子对完成的包进行使用验证 配置文件热加载包的是实现 其实整体的思路还是比较简单的,当获取配置文件内容后,会开启一个goroutine,去 循环读配置文件,当然这里不可能不限制的一直循环,而是设置了一个定时器,

  • Air实现Go程序实时热重载使用过程解析示例

    目录 前言 为什么需要实时加载? Air介绍 安装Air Go MacOS Linux Windows Dcoker 使用Air air_example.conf示例 效果演示 前言 今天我们要介绍一个神器——Air能够实时监听项目的代码文件,在代码发生变更之后自动重新编译并执行,大大提高gin框架项目的开发效率. 为什么需要实时加载? 之前使用Python编写Web项目的时候,常见的Flask或Django框架都是支持实时加载的,你修改了项目代码之后,程序能够自动重新加载并执行(live-re

  • golang gorm实现get请求查询案例测试

    目录 案例 查询班级get请求 查询学生get请求 案例 package main import ( _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" "github.com/gin-gonic/gin" ) //班级-学生:一对多 type Class struct { gorm.Model ClassName string Students []Student //班级有多

  • golang gorm多条件筛选查询操作

    案例: 查看陌陌的动态,依次可以按照发布时间,性别,城市进行筛选 如图进行筛选 gorm链式操作 Method Chaining,Gorm 实现了链式操作接口,所以你可以把代码写成这样: // 创建一个查询 tx := db.Where("name = ?", "jinzhu") // 添加更多条件 if someCondition { tx = tx.Where("age = ?", 20) } else { tx = tx.Where(&qu

  • golang Gorm框架讲解

    目录 1.gorm介绍 1.1介绍 1.2安装 2.使用 2.1创建表 2.2.添加数据 2.3.查询数据 2.4更新数据 2.5删除数据 2.6执行原生sql 3.一对一 3.1创建表 3.2多态关联 3.3外键约束 4.一对多 5.多对多 6.获取多表数据 1.gorm介绍 1.1介绍 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方法 支持 Pr

  • golang gorm 操作mysql及gorm基本用法

    golang 官方的那个操作mysql的有点麻烦所以就使用了gorm,下面就gorm的使用做下简单介绍 下载gorm: go get -u github.com/jinzhu/gorm 在项目中引入gorm: import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) 定义db连接信息 func DbConn(MyUser, Password, Host, Db stri

  • golang gorm 计算字段和获取sum()值的实现

    计算表lb_ytt_user_money_log 中,字段money的和 代码如下: var total_money []int sqlstr := `select SUM(money) as total_money from lb_ytt_user_money_log where user_id = ? and l_type = 1 and status=1 and (create_time> ? and create_time <= ?)` Db.Raw(sqlstr, userID, b

  • golang gorm的Callbacks事务回滚对象操作示例

    目录 1. Callbacks 1.1. 创建对象 1.2. 更新对象 1.3. 删除对象 1.4. 查询对象 1.5. 回调示例 1. Callbacks 您可以将回调方法定义为模型结构的指针,在创建,更新,查询,删除时将被调用,如果任何回调返回错误,gorm将停止未来操作并回滚所有更改. 1.1. 创建对象 创建过程中可用的回调 // begin transaction 开始事物 BeforeSave BeforeCreate // save before associations 保存前关

  • golang gorm模型结构体的定义示例

    目录 1. 模型 1.1. 模型定义 2. 约定 2.1. gorm.Model 结构体 2.2. 表名是结构体名称的复数形式 2.3. 更改默认表名 2.4. 列名是字段名的蛇形小写 2.5. 字段ID为主键 2.6. 字段CreatedAt用于存储记录的创建时间 2.7. 字段UpdatedAt用于存储记录的修改时间 2.8. 字段DeletedAt用于存储记录的删除时间,如果字段存在 1. 模型 1.1. 模型定义 type User struct { gorm.Model Birthda

  • golang gorm的预加载及软删硬删的数据操作示例

    目录 1. orm读写数据 1. 创建 1.1. 创建记录 1.2. 默认值 1.3. 在Callbacks中设置主键 1.4. 扩展创建选项 2. 查询 2.1. Where查询条件 (简单SQL) 2.2. Where查询条件 (Struct & Map) 2.3. Not条件查询 2.4. 带内联条件的查询 2.5. Or条件查询 2.6. 查询链 2.7. 扩展查询选项 2.8. FirstOrInit 2.9. Attrs 2.10. Assign 2.11. FirstOrCreat

  • golang gorm错误处理事务以及日志用法示例

    目录 1. 高级用法 1.1. 错误处理 1.2. 事物 1.2.1. 一个具体的例子 1.3. SQL构建 1.3.1. 执行原生SQL 1.3.2. sql.Row & sql.Rows 1.3.3. 迭代中使用sql.Rows的Scan 1.4. 通用数据库接口sql.DB 1.4.1. 连接池 1.5. 复合主键 1.6. 日志 1.6.1. 自定义日志 1. 高级用法 1.1. 错误处理 执行任何操作后,如果发生任何错误,GORM将其设置为*DB的Error字段 if err := d

  • golang gorm开发架构及写插件示例

    目录 1. 开发 1.1. 架构 1.2. 写插件 1.2.1. 注册新的callback 1.2.2. 删除现有的callback 1.2.3. 替换现有的callback 1.2.4. 注册callback顺序 1.2.5. 预定义回调 1. 开发 1.1. 架构 Gorm使用可链接的API,*gorm.DB是链的桥梁,对于每个链API,它将创建一个新的关系. db, err := gorm.Open("postgres", "user=gorm dbname=gorm

随机推荐