import (
"database/sql"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
)
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初始化数据库连接
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)
}
我们需要利用到不定量参数的 ‘…’ 方法,定义一个数组,并按照需求将参数赋值到数组中,然后将素组切片传入
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")
}
{
"Id": 1,
"Name": "小赵"
}
不同的框架可能处理方式不同,文章只是作为记录存在,以防忘记