一、主函数
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"mysql-manager/db"
"net/http"
)
//函数
func Create_Tables(c *gin.Context) {
c.String(http.StatusOK, fmt.Sprintf("create数据表"))
}
func Delete_Tables(c *gin.Context) {
c.String(http.StatusOK, fmt.Sprintf("delete数据表"))
}
func main() {
//连接数据库
Table := &db.StuManager{}
db.Mysql_Link(Table)
//开启gin框架
route := gin.Default()
//加载前端页面
route.LoadHTMLGlob("templates/*")
//创建路由分组
create := route.Group("/create")
{
create.POST("/user", db.Create_User)
create.GET("/tables", db.Create_Tables)
}
//删除路由分组
delete := route.Group("/delete")
{
delete.GET("/user", db.Delete_User)
delete.GET("/tables", Delete_Tables)
}
//查询路由分组
query := route.Group("/query")
{
query.GET("/user", db.Query_User)
query.GET("/tables", Delete_Tables)
}
//启动
route.Run(":8888") // 端口号8888
}
二、 db包
package db
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"net/http"
"time"
)
//表结构
type StuManager struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"USER_NAME,type:varchar(256);not null;" binding:"required"`
Gender string `gorm:"GENDER;not null;" binding:"required"`
Age uint8 `gorm:"AGE;not null;" binding:"required"`
CreatedAt time.Time `gorm:"column:created_at;type:datetime"`
UpdateTime time.Time `gorm:"autoCreateTime"`
}
//创建用户接口
func Create_User(c *gin.Context) {
Table := &StuManager{}
db := Mysql_Link(Table)
//接收POST请求数据
if err := c.Bind(&Table); err != nil {
c.String(http.StatusBadRequest, "Invalid request: %v", err)
return
}
//创建用户数据
if err := db.Create(&Table).Error;err != nil{
c.String(http.StatusBadRequest, "Invalid request: %v", err)
return
}else {
c.String(http.StatusBadRequest, "创建用户成功")
}
}
//查询用户数据
func Query_User(c *gin.Context) {
Table := &StuManager{}
db := Mysql_Link(Table)
name := c.Query("name")
db.Where("name = ?",name).First(Table);
c.String(http.StatusOK, fmt.Sprintf("ID: %d, Name: %s, Age: %d\n",Table.ID,Table.Name,Table.Age))
}
//删除用户数据
func Delete_User(c *gin.Context) {
Table := &StuManager{}
db := Mysql_Link(Table)
name := c.Query("name")
db.Where("name = ?",name).Delete(Table);
//fmt.Printf("ID: %d, Name: %s, Age: %d\n",Table.ID,Table.Name,Table.Age)
c.String(http.StatusOK, fmt.Sprintf("delete用户"))
}
//返回前端页面
func Create_Tables(c *gin.Context) {
c.HTML(http.StatusOK, "index.html",gin.H{
"s1": "s1",
})
}
//连接数据库
func Mysql_Link(Any *StuManager) *gorm.DB {
db, err := gorm.Open("mysql", "root:newpassword@tcp(10.0.0.11:3306)/gorm?charset=utf8&parseTime=True&loc=Local")
//defer db.Close()
if err != nil {
panic("failed to connect database")
}
//创建表,如果表不存在就创建表
db.AutoMigrate(Any)
return db
}
三、前端页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h3>用户注册</h3> <form action="http://127.0.0.1:8888/create/user" method="post"> <p><label for="user">姓名</label>: <input type="text" name="Name" id="user"></p> <p>密码: <input type="password" name="Age"></p> <p>爱好: <input type="checkbox" name="hobby" value="basketball">篮球 <input type="checkbox" name="hobby" value="football">足球 </p> <p>性别: <input type="radio" name="Gender" value="men">男 <input type="radio" name="Gender" value="female">女 <input type="radio" name="Gender" value="qita">其他 </p> <p>生日:<input type="date" name="cc"></p> <p>籍贯: <select name="province" id="" multiple size="2"> <option value="">广东省</option> <option value="" selected>山东省</option> <option value="">河北省</option> </select> </p> <p> <textarea name="" id="" cols="30" rows="10" placeholder="个人简介"></textarea> </p> <div> <p><input type="reset" value="重置"></p> <p><input type="button" value="普通按钮"></p> <p><button>普通按钮</button></p> <p><input type="submit" value="提交"></p> </div> </form> </body> </html>
有问题请加博主微信进行沟通!
全部评论