1.接口
//POST请求 db操作,新增数据
r.POST("/add", controller.SaveUser)
2.接收前端传的参数并解析成结构化数据(类似java的 json转为实体类属性)
package controller
import (
"gin/dao"
"github.com/gin-gonic/gin"
)
type User struct {
UserName string
NickName string
}
func SaveUser(context *gin.Context) {
user := &User{}
context.BindJSON(&user)
//执行保存
saveUser := dao.SaveUser((*dao.User)(user))
if saveUser == 1 {
ReturnSucess(context, 200, "保存成功", user, 1)
} else if saveUser == 0 {
ReturnError(context, 500, "保存失败,请联系管理员处理", user, 1)
}
}
3.使用gorm(orm对象关系映射)持久化数据到数据库中
package dao
import (
"gin/config"
"log"
)
type User struct {
//主键
//ID int32
//通过在字段后面的标签来定义golang字段和表字段的关系
//例如:gorm:"column:username"
标签说明含义是:Mysql表的列名(字段名)为 username
UserName string gorm:"column:user_name"
NickName string gorm:"column:nick_name"
//CreateTime int64 gorm:"column:create_time"
//创建时间,时间戳
}
// 映射表名
func (user User) TableName() string {
return "sys_user"
}
func SaveUser(user *User)( num int) {
//新增
err := config.DB.Create(user).Error
if err != nil {
log.Println("新增用户失败,原因:", err)
num = 0;
return 0;
}else {
log.Print("新增用户成功")
return 1;
}
}
func GetUserById(id string) User {
var user User
err := config.DB.Where("id = ?", id).First(&user).Error
if err != nil {
log.Println("查询用户失败,原因:", err)
}
return user
}
4.接口 json传参
{
"UserName" : "111",
"NickName": "王大锤昵称"
}
5.测试