数据库是业务应用的核心,本节主要讲解gin框架(Go语言)操作原生数据库、go语言数据库ORM框架(gorm和xorm)。
1.原生数据库package main
import (
"database/sql"
"fmt"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"net/http"
)
var sqlDb *sql.DB //数据库连接db
var sqlResponse SqlResponse //响应client的数据
func init() {
//1、打开数据库
//parseTime:时间格式转换(查询结果为时间时,是否自动解析为时间);
// loc=Local:MySQL的时区设置
sqlStr := "root:123456@tcp(127.0.0.1:3306)/testdb?charset=utf8&parseTime=true&loc=Local"
var err error
sqlDb, err = sql.Open("mysql", sqlStr)
if err != nil {
fmt.Println("数据库打开出现了问题:", err)
return
}
//2、 测试与数据库建立的连接(校验连接是否正确)
err = sqlDb.Ping()
if err != nil {
fmt.Println("数据库连接出现了问题:", err)
return
}
}
//Client提交的数据
type SqlUser struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address"`
}
//应答体(响应client的请求)
type SqlResponse struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}
func main() {
r := gin.Default()
//数据库的CRUD--->gin的 post、get、put、delete方法
r.POST("sql/insert", insertData) //添加数据
r.GET("sql/get",getData) //查询数据(单条记录)
r.GET("sql/mulget",getMulData)//查询数据(多条记录)
r.PUT("sql/update",updateData)//更新数据
r.DELETE("sql/delete",deleteData)//删除数据
r.Run(":9090")
}
func deleteData(c *gin.Context) {
name:=c.Query("name")
var count int
//1、先查询
sqlStr:="select count(*) from user where name=?"
err := sqlDb.QueryRow(sqlStr, name).Scan(&count)
if count<=0||err!=nil{
sqlResponse.Code = http.StatusBadRequest
sqlResponse.Message = "删除的数据不存在"
sqlResponse.Data = "error"
c.JSON(http.StatusOK, sqlResponse)
return
}
//2、再删除
delStr:="delete from user where name=?"
ret, err := sqlDb.Exec(delStr, name)
if err != nil {
fmt.Printf("delete failed, err:%v\n", err)
sqlResponse.Code = http.StatusBadRequest
sqlResponse.Message = "删除失败"
sqlResponse.Data = "error"
c.JSON(http.StatusOK, sqlResponse)
return
}
sqlResponse.Code = http.StatusOK
sqlResponse.Message = "删除成功"
sqlRespo