Go语言---动态查询数据库


一、引入数据库包

import (
	"database/sql"
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
)

二、使用步骤

1.创建全局对象

var db *sql.DB

func init(){
	//数据库连接---查询/新增
	db, _ = sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/plat_service?charset=utf8")
	if err := db.Ping(); err != nil {
		fmt.Println("open database fail")
		return
	}
	//defer db.Close()
}

type User struct {
	Id				int
	Name			string
}

创建全局对象,并使用init初始化数据库连接


2.CRUD操作

func SelectDataByName(name string) {
	var values []interface{}
	sql := "SELECT id, `name` FROM tb_user"
	if !isNull(name) {
		sql += " WHERE name = ?"
		values = append(values, name)
	}
	rows, err := db.Query(sql, values...)
	if err != nil {
		return
	}
	var user model.User
	for rows.Next() {
		_=rows.Scan(&user.Id, &user.Name)
	}
	fmt.Println(user)
}

我们需要利用到不定量参数的 ‘…’ 方法,定义一个数组,并按照需求将参数赋值到数组中,然后将素组切片传入


3.编写接口

func main() {
	r := gin.Default()
	r.POST("/user", func(context *gin.Context) {
		name := context.DefaultPostForm("name", "小明")		//获取默认格式下的参数,并赋值一个默认值
		data := service.SelectDataByName(name)				//调用service查询,Go语言中如果需要外部调用那么方法名/属性名/对象名需要大写
		context.JSON(200, data)
	})	
	r.Run(":10010")
}

4.结果

{
	"Id": 1,
	"Name": "小赵"
}

不同的框架可能处理方式不同,文章只是作为记录存在,以防忘记

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值