ZBLOG

go+gin+mysql实现增删改查功能,代码实例

以下是一个使用Go语言、Gin框架和MySQL数据库实现增删改查功能的简单示例:

  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. "github.com/gin-gonic/gin"
  7. _ "github.com/go-sql-driver/mysql"
  8. )
  9. type User struct {
  10. ID int `json:"id"`
  11. Name string `json:"name"`
  12. Age int `json:"age"`
  13. }
  14. func main() {
  15. db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname?parseTime=true")
  16. if err != nil {
  17. log.Fatal(err)
  18. }
  19. defer db.Close()
  20. router := gin.Default()
  21. router.GET("/users/:id", func(c *gin.Context) {
  22. id := c.Param("id")
  23. var user User
  24. err := db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", id).Scan(&user.ID, &user.Name, &user.Age)
  25. if err != nil {
  26. c.JSON(404, gin.H{"error": "User not found"})
  27. return
  28. }
  29. c.JSON(200, user)
  30. })
  31. router.POST("/users", func(c *gin.Context) {
  32. var user User
  33. if err := c.ShouldBindJSON(&user); err != nil {
  34. c.JSON(400, gin.H{"error": "Invalid request payload"})
  35. return
  36. }
  37. result, err := db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", user.Name, user.Age)
  38. if err != nil {
  39. c.JSON(500, gin.H{"error": "Failed to create user"})
  40. return
  41. }
  42. // 获取自动生成的ID
  43. userID, _ := result.LastInsertId()
  44. user.ID = int(userID)
  45. c.JSON(201, user)
  46. })
  47. router.PUT("/users/:id", func(c *gin.Context) {
  48. id := c.Param("id")
  49. var user User
  50. if err := c.ShouldBindJSON(&user); err != nil {
  51. c.JSON(400, gin.H{"error": "Invalid request payload"})
  52. return
  53. }
  54. result, err := db.Exec("UPDATE users SET name = ?, age = ? WHERE id = ?", user.Name, user.Age, id)
  55. if err != nil {
  56. c.JSON(500, gin.H{"error": "Failed to update user"})
  57. return
  58. }
  59. // 检查是否更新成功
  60. rowsAffected, _ := result.RowsAffected()
  61. if rowsAffected == 0 {
  62. c.JSON(404, gin.H{"error": "User not found"})
  63. return
  64. }
  65. c.Status(204)
  66. })
  67. router.DELETE("/users/:id", func(c *gin.Context) {
  68. id := c.Param("id")
  69. result, err := db.Exec("DELETE FROM users WHERE id = ?", id)
  70. if err != nil {
  71. c.JSON(500, gin.H{"error": "Failed to delete user"})
  72. return
  73. }
  74. // 检查是否删除成功
  75. rowsAffected, _ := result.RowsAffected()
  76. if rowsAffected == 0 {
  77. c.JSON(404, gin.H{"error": "User not found"})
  78. return
  79. }
  80. c.Status(204)
  81. })
  82. router.Run(":8080")
  83. }

请注意替换username:password@tcp(127.0.0.1:3306)/dbname中的数据库连接信息,以及适应您的数据库结构。

以上示例提供了GET、POST、PUT和DELETE请求的基本处理方法,您可以通过使用Postman等工具来测试这些API。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8446

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?