【GO-教程7】GinLaravel操作MySQL数据:增删改查示例

-

直接使用DB操作数据(不使用MVC,MVC需要判断数据类型DB不需要)。

导入数据库参数:

var DB *sql.DB = driver.MysqlDb

自动判断请求类型并自动输出参数值,没有键则返回空:

// 自动判断请求类型并自动输出参数值
func Input(ctx *gin.Context, key string) string {
	var _value string
	var value string
	var hasKey bool

	_method := ctx.Request.Method

	if _method == "GET" {
		value, hasKey = ctx.GetQuery(key)
	}else if _method == "POST" {
		value, hasKey = ctx.GetPostForm(key)
	}else {
		value, hasKey = "(only GET/POST)", false
	}

	if !hasKey { // 参数不存在
		_value = ""
	}else{
		_value = value
	}

	return _value
}

查询、新增、修改、假删除、真删除:

// 某用户信息
type ThatUserKeys struct { // 结果集,参数名需大写
	UserId int
	Nickname string
	CreatTime string
}
func ThatUser(ctx *gin.Context) {

	// 预定义参数
	var state int
	var msg string

	userId := Kit.Input(ctx, "user_id")

	// 直接查询数据
	user := ThatUserKeys{} // 构建结果集
	err := DB.QueryRow("SELECT `user_id`, `nickname`, `create_time` FROM `gl_user` WHERE `state`<>2 AND `user_id`=?", userId).Scan(&user.UserId, &user.Nickname, &user.CreatTime)

	if err != nil {
		state = 0
		msg = "查询无数据"
	}else {
		state = 1
		msg = "查询完成"

		// 访问结构体并改变成员变量的值
		createTime := user.CreatTime
		createTime = Common.DateToDate(createTime)
		user.CreatTime = createTime

	}

	// 返回一些测试数据
	testData := gin.H{
		"user_id": userId,
	}

	// 返回特殊格式意义的数据
	ctx.JSON(200, gin.H{
		"state":     state,
		"msg":       msg,
		"test_data": testData,
		"content":   user,
	})
}


// 新增用户信息
func AddUser(ctx *gin.Context) {
	// 预定义参数
	var state int
	var msg string

	userClassId := Kit.Input(ctx, "user_class_id")
	nickname := Kit.Input(ctx, "nickname")
	createTime := Common.GetTimeDate("YmhHis")

	data, err := DB.Exec("INSERT INTO `gl_user` (`user_class_id`, `nickname`, `create_time`) VALUES (?, ?, ?)", userClassId, nickname, createTime )

	_id, resErr := data.LastInsertId()

	if err != nil {
		state = 0
		msg = "新增失败"
	}else {
		state = 1
		msg = "新增成功"
	}

	// 返回一些测试数据
	testData := gin.H{
		"res_err": resErr,
	}

	// 返回特殊格式意义的数据
	ctx.JSON(200, gin.H{
		"state":     state,
		"msg":       msg,
		"test_data": testData,
		"content":   gin.H{
			"id": _id,
		},
	})
}


// 修改用户信息
func UpdateUser(ctx *gin.Context) {
	// 预定义参数
	var state int
	var msg string

	userId := Kit.Input(ctx, "user_id")

	userClassId := Kit.Input(ctx, "user_class_id")
	nickname := Kit.Input(ctx, "nickname")
	updateTime := Common.GetTimeDate("YmhHis")

	data, err := DB.Exec("UPDATE `gl_user` SET `user_class_id`=?, `nickname`=?, `update_time`=? WHERE `state`=1 AND `user_id`=? ", userClassId, nickname, updateTime, userId)

	res, resErr := data.RowsAffected()

	if err != nil {
		state = 0
		msg = "更新失败或无原数据"
	}else {
		state = 1
		msg = "更新成功"
	}

	// 返回一些测试数据
	testData := gin.H{
		"res_err": resErr,
		"user_id": userId,
	}

	// 返回特殊格式意义的数据
	ctx.JSON(200, gin.H{
		"state":     state,
		"msg":       msg,
		"test_data": testData,
		"content":   gin.H{
			"res": res,
		},
	})
}


// 删除用户
// 不是真正删除,只是不可见
func DelUser(ctx *gin.Context) {
	// 预定义参数
	var state int
	var msg string

	userId := Kit.Input(ctx, "user_id")
	updateTime := Common.GetTimeDate("YmhHis")

	data, err := DB.Exec("UPDATE `gl_user` SET `state`=2, `update_time`=? WHERE `state`=1 AND `user_id`=? ", updateTime, userId)

	res, resErr := data.RowsAffected()

	if err != nil {
		state = 0
		msg = "无原数据或已删除"
	}else {
		state = 1
		msg = "删除成功"
	}

	// 返回一些测试数据
	testData := gin.H{
		"res_err": resErr,
		"user_id": userId,
	}

	// 返回特殊格式意义的数据
	ctx.JSON(200, gin.H{
		"state":     state,
		"msg":       msg,
		"test_data": testData,
		"content":   gin.H{
			"res": res,
		},
	})
}


// 清除用户
// 直接删除
func ClearUser(ctx *gin.Context) {
	// 预定义参数
	var state int
	var msg string

	userId := Kit.Input(ctx, "user_id")

	data, err := DB.Exec("DELETE FROM `gl_user` WHERE `user_id` = ?", userId)

	res, resErr := data.RowsAffected()

	if err != nil {
		state = 0
		msg = "无原数据或已清除"
	}else {
		state = 1
		msg = "清除成功"
	}

	// 返回一些测试数据
	testData := gin.H{
		"res_err": resErr,
		"user_id": userId,
	}

	// 返回特殊格式意义的数据
	ctx.JSON(200, gin.H{
		"state":     state,
		"msg":       msg,
		"test_data": testData,
		"content":   gin.H{
			"res": res,
		},
	})
}

-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值