最近学习了一下go web开发,打算随便写点东西练一练,这个是今天利用gin+xorm写的,可以实现数据库增删改,还没怎么完善,全当学习。。。
AllRunMain.go
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/thinkerou/favicon"
)
func main() {
ginServer := gin.Default()
ginServer.Use(favicon.New("./favicon.ico"))
ginServer.LoadHTMLGlob("templates/*")
ginServer.Static("/static", "./static")
ginServer.GET("", IndexWelcome)
ginServer.POST("/users", CreateUser)
if err := ginServer.Run(":8800"); err != nil {
fmt.Println("端口冲突")
}
}
sqlWebFunc.go
package main
import (
"github.com/gin-gonic/gin"
"go-web-sql/demoSql"
"net/http"
)
func IndexWelcome(context *gin.Context) {
context.HTML(http.StatusOK, "index.html", "./index.html")
}
func CreateUser(c *gin.Context) {
c.BindJSON(&demoSql.Guest)
demoSql.Check()
c.JSON(http.StatusOK, gin.H{
"Name": &demoSql.Guest.Name,
"Passwd": &demoSql.Guest.Passwd,
"Age": &demoSql.Guest.Age,
"ChooseNum": &demoSql.Guest.ChooseNum,
})
}
demoSql.go
package demoSql
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"xorm.io/xorm"
)
func CheckSqlMain() {
var user User
//构建数据库连接信息
dataSourceName := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", userName, password, ipAddress, port, dbName, charset)
//xorm.NewEngine 创建引擎
engine, err := xorm.NewEngine("mysql", dataSourceName)
if err != nil {
fmt.Println("连接失败数据库")
}
if err = engine.Sync(new(User)); err != nil {
panic(err)
}
session := engine.NewSession()
defer func() {
err := recover()
if err != nil {
session.Rollback()
} else {
session.Commit()
}
}()
if err = session.Begin(); err != nil {
panic(err)
}
switch {
case IncomingS().ChooseNum == 1:
if _, err := session.Insert(IncomingS()); err != nil {
panic(err)
}
case IncomingS().ChooseNum == 2:
if _, err := session.Where("name = ?", IncomingS().Name).Delete(&user); err != nil {
panic(err)
}
case IncomingS().ChooseNum == 3:
if _, err := session.Where("name = ?", IncomingS().Name).Update(IncomingS()); err != nil {
panic(err)
}
}
}
sqlCheck.go
package demoSql
import (
"fmt"
)
func Check() {
if IncomingS().Name == "" || IncomingS().ChooseNum == 0 {
fmt.Println("错误检查需要输入的参数")
} else {
CheckSqlMain()
}
}
typeThing.go
package demoSql
import (
"time"
)
type User struct {
Id int64
Name string
Age int
Passwd string `xorm:"varchar(200)"`
Created time.Time `xorm:"created"`
Updated time.Time `xorm:"updated"`
ChooseNum int
}
var (
Guest User
userName = "root"
password = "123456"
ipAddress = "127.0.0.1"
port = 3306
dbName = "demoWebSql"
charset = "utf8mb4"
)
func Incoming(userName string, age int, passwd string, chooseNum int) User {
IncomingValue := User{Name: userName, Age: age, Passwd: passwd, ChooseNum: chooseNum}
return IncomingValue
}
func IncomingS() User {
IncomingValueS := Incoming(Guest.Name, Guest.Age, Guest.Passwd, Guest.ChooseNum)
return IncomingValueS
}
style.css
body{
background: bisque;
}
common.js
alert("文")
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>GO-Web-SQL开发 by 文</title>
<link rel="stylesheet" href="/static/css/style.css">
<script src="/static/js/common.js"></script>
</head>
<body>
<h1>GO-Web-SQL开发 by 文</h1>
</body>
</html>
效果: