database.go mysql连接配置
package config
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DB *gorm.DB
func Connect() (err error) {
//初始化数据库连接
dns := "root:123456@(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
DB, err = gorm.Open(mysql.Open(dns), &gorm.Config{})
if err != nil {
fmt.Println("mysql content faild, err:", err)
return
}
return
}
dog.go 对象
package entities
import (
_ "time"
)
type Todo struct {
ID int `json:"id"`
Tiltle string `json:"title"`
Status bool `json:"status"`
}
dog.go 方法
package handlers
import (
"github.com/gofiber/fiber/v2"
"github.com/programmerug/fibergorm/config"
"github.com/programmerug/fibergorm/entities"
)
func GetDogs(c *fiber.Ctx) error {
var dogs []entities.Todo
config.DB.Find(&dogs)
return c.Status(200).JSON(dogs)
}
func GetDog(c *fiber.Ctx) error {
id := c.Params("id")
var dog entities.Todo
result := config.DB.Find(&dog, id)
if result.RowsAffected == 0 {
return c.SendStatus(404)
}
return c.Status(200).JSON(&dog)
}
func Get(c *fiber.Ctx) error {
return c.Send([]byte("Hello, World!"))
}
func AddDog(c *fiber.Ctx) error {
dog := new(entities.Todo)
if err := c.BodyParser(dog); err != nil {
return c.Status(503).SendString(err.Error())
}
config.DB.Create(&dog)
return c.Status(201).JSON(dog)
}
func UpdateDog(c *fiber.Ctx) error {
dog := new(entities.Todo)
id := c.Params("id")
if err := c.BodyParser(dog); err != nil {
return c.Status(503).SendString(err.Error())
}
config.DB.Where("id = ?", id).Updates(&dog)
return c.Status(200).JSON(dog)
}
func RemoveDog(c *fiber.Ctx) error {
id := c.Params("id")
var dog entities.Todo
result := config.DB.Delete(&dog, id)
if result.RowsAffected == 0 {
return c.SendStatus(404)
}
return c.SendStatus(200)
}
go.mod
module github.com/programmerug/fibergorm
go 1.16
require (
github.com/gofiber/fiber/v2 v2.24.0
github.com/gofiber/logger v0.2.4
gorm.io/driver/mysql v1.2.3
gorm.io/gorm v1.22.4
)
main.go
package main
import (
"github.com/gofiber/fiber/v2"
"github.com/programmerug/fibergorm/config"
_ "github.com/programmerug/fibergorm/config"
"github.com/programmerug/fibergorm/handlers"
"log"
)
func main() {
app := fiber.New()
config.Connect()
app.Static("/", "/public")
// => http://localhost:3000/js/script.js
// => http://localhost:3000/css/style.css
app.Static("/prefix", "/public")
// => http://localhost:3000/prefix/js/script.js
// => http://localhost:3000/prefix/css/style.css
app.Static("*", "/public/index.html")
// => http://localhost:3000/any/path/shows/index/html
app.Get("/dogs", handlers.GetDogs)
app.Get("/list", handlers.Get)
app.Get("/dogs/:id", handlers.GetDog)
app.Post("/dogs", handlers.AddDog)
app.Put("/dogs/:id", handlers.UpdateDog)
app.Delete("/dogs/:id", handlers.RemoveDog)
log.Fatal(app.Listen(":3000"))
}
sql
CREATE TABLE `todos` (
`ID` int DEFAULT NULL,
`Tiltle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`Status` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
错误解决:
Error running 'go build main.go': Cannot run program "C:\Users\Administrator\AppData\Local\Temp\___1go_build_main_go.exe" (in directory "D:\WJLJ\fibergorm"): CreateProcess error=216, 该版本的 %1 与你运行的 Windows 版本不兼容。请查看计算机的系统信息,然后联系软件发布者。
import的包下载不了,解决办法
go build main.go 配置