当前位置: 首页 > news >正文

1 建设网站目的是什么中文域名查询网站

1 建设网站目的是什么,中文域名查询网站,手机网站 如何 推广方案设计,棋牌软件挂脚本定制开发概述 如果您没有Golang的基础,应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730Mo…

概述

如果您没有Golang的基础,应该学习如下前置课程。

  • Golang零基础入门
  • Golang面向对象编程
  • Go Web 基础
  • Go语言开发REST API接口_20240728
  • Go语言操作MySQL开发用户管理系统API教程_20240729
  • Redis零基础快速入门_20231227
  • Go+Redis开发用户管理系统API实战_20240730
  • MongoDB快速入门_20240411
  • Go语言+MongoDB用户管理系统实战_20240730
  • Go语言+gRPC用户微服务项目实战_20240730

基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会的知识点再看视频。

课程特色

本教程录制于2024年8月3日,使用Go1.22版本,基于Goland2024进行开发,采用的技术栈比较新。

每节课控制在十分钟以内,课时精简,每节课都是一个独立的知识点,如果有遗忘,完全可以当做字典来查询,绝不浪费大家的时间。

整个课程从如何连接MySQL讲起,讲解gorm的增删改查常见操作,然后结合REST API接口开发的知识,开发一个用户管理系统的后端API服务,层层递进,学习路径平缓。

Golang是当前国内越来越多的企业正在全面转的一门系统级别的高性能的编程语言,比C语言写法更加的简单,比Python性能更加的好,是新时代的C语言,建议每个程序员都掌握!

视频课程

最近发现越来越多的公司在用Golang了,所以精心整理了一套视频教程给大家,这个是其中的第11部,后续还会有很多。

视频已经录制完成,完整目录截图如下:
在这里插入图片描述

本套课程的特色是每节课都是一个核心知识点,每个视频控制在十分钟左右,精简不废话,拒绝浪费大家的时间。

课程目录

  • 01 概述
  • 02 连接MySQL数据库
  • 03 创建表
  • 04 新增数据
  • 05 查询数据
  • 06 修改数据
  • 07 删除数据
  • 08 zdpgo_gorm的介绍和使用
  • 09 事务的使用
  • 10 搭建项目的基本结构
  • 11 封装和使用初始化和关闭MySQL的方法
  • 12 创建和启动服务
  • 13 实现新增用户的接口并进行测试
  • 14 实现查询所有用户的接口并进行测试
  • 15 实现根据ID查询用户的接口并进行测试
  • 16 实现根据ID修改用户的接口并进行测试
  • 17 实现根据ID删除用户的接口并进行测试
  • 18 总结

完整代码

02 连接MySQL数据库

package mainimport ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)func main() {db, err := gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)
}

03 创建表

package mainimport ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})
}

04 新增数据

package mainimport ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})user := User{11, "张三", 33}db.Create(&user)
}

05 查询数据

package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})var users []Userdb.Find(&users)fmt.Println(users)
}

06 修改数据

package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})db.Model(&User{Id: 11}).Update("name", "李四333")var users []Userdb.Find(&users)fmt.Println(users)
}

07 删除数据

package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})db.Delete(&User{Id: 11})var users []Userdb.Find(&users)fmt.Println(users)
}

08 zdpgo_gorm的介绍和使用

package mainimport ("fmt""github.com/zhangdapeng520/zdpgo_gorm"_ "github.com/zhangdapeng520/zdpgo_mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := zdpgo_gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})var users []Userdb.Find(&users)fmt.Println(users)
}

09 事务的使用

package mainimport ("fmt""github.com/zhangdapeng520/zdpgo_gorm"_ "github.com/zhangdapeng520/zdpgo_mysql"
)type User struct {Id   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func main() {db, err := zdpgo_gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local",)if err != nil {panic(err)}defer db.Close()db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100)db.AutoMigrate(&User{})tx := db.Begin()u := User{Name: "赵六", Age: 18}err = tx.Create(&u).Errorif err != nil {tx.Rollback()panic(err)}tx.Commit()var users []Userdb.Find(&users)fmt.Println(users)
}

11 封装和使用初始化和关闭MySQL的方法

package gimport ("github.com/zhangdapeng520/zdpgo_gorm"_ "github.com/zhangdapeng520/zdpgo_mysql""gorm_api_user2/model"
)var GDB *zdpgo_gorm.DBfunc initMySQL() {var err errorGDB, err = zdpgo_gorm.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local",)if err != nil {panic(err)}GDB.DB().SetMaxIdleConns(10)GDB.DB().SetMaxOpenConns(100)GDB.AutoMigrate(&model.User{})
}func closeMySQL() {GDB.Close()
}

12 创建和启动服务

package routerimport "github.com/zhangdapeng520/zdpgo_httprouter"func InitRouter() *zdpgo_httprouter.Router {router := zdpgo_httprouter.New()router.POST("/user", userAdd)router.GET("/user", userGetAll)router.GET("/user/:id", userGet)router.PUT("/user/:id", userUpdate)router.DELETE("/user/:id", userDelete)return router
}
package mainimport ("gorm_api_user2/g""gorm_api_user2/router""net/http""time"
)func main() {g.InitGlobal()defer g.CloseGlobal()server := &http.Server{Addr:         ":8888",Handler:      router.InitRouter(),ReadTimeout:  5 * time.Second,WriteTimeout: 5 * time.Second,}server.ListenAndServe()
}

13 实现新增用户的接口并进行测试

package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""gorm_api_user2/g""gorm_api_user2/model""net/http"
)func userAdd(w http.ResponseWriter, r *http.Request, _ zdpgo_httprouter.Params) {var user model.Userzdpgo_httprouter.GetJson(r, &user)g.GDB.Create(&user)zdpgo_httprouter.ResponseSuccess(w, user)
}
package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""io""os""testing"
)func TestUserAdd(t *testing.T) {targetUrl := "http://127.0.0.1:8888/user"data := map[string]interface{}{"name": "王五","age":  30,}resp, err := zdpgo_httprouter.SendJson("POST", targetUrl, data)if err != nil {t.Error(err)}io.Copy(os.Stdout, resp.Body)
}

14 实现查询所有用户的接口并进行测试

package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""gorm_api_user2/g""gorm_api_user2/model""net/http""strconv"
)func userGetAll(w http.ResponseWriter, r *http.Request, _ zdpgo_httprouter.Params) {var users []model.Userg.GDB.Find(&users)zdpgo_httprouter.ResponseSuccess(w, users)
}func userGet(w http.ResponseWriter, r *http.Request, ps zdpgo_httprouter.Params) {idStr := ps.ByName("id")id, _ := strconv.Atoi(idStr)var user model.Userg.GDB.Find(&user, "id=?", id)zdpgo_httprouter.ResponseSuccess(w, user)
}
package routerimport ("io""net/http""os""testing"
)func TestUserGetAll(t *testing.T) {targetUrl := "http://127.0.0.1:8888/user"resp, err := http.Get(targetUrl)if err != nil {t.Error(err)}io.Copy(os.Stdout, resp.Body)
}func TestUserGet(t *testing.T) {targetUrl := "http://127.0.0.1:8888/user/4"resp, err := http.Get(targetUrl)if err != nil {t.Error(err)}io.Copy(os.Stdout, resp.Body)
}

16 实现根据ID修改用户的接口并进行测试

package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""gorm_api_user2/g""gorm_api_user2/model""net/http""strconv"
)func userUpdate(w http.ResponseWriter, r *http.Request, ps zdpgo_httprouter.Params) {idStr := ps.ByName("id")id, _ := strconv.Atoi(idStr)var user model.Userzdpgo_httprouter.GetJson(r, &user)g.GDB.Model(model.User{Id: id}).Update("name", user.Name, "age", user.Age)zdpgo_httprouter.ResponseSuccess(w, nil)
}
package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""io""os""testing"
)func TestUserUpdate(t *testing.T) {targetUrl := "http://127.0.0.1:8888/user/4"data := map[string]interface{}{"name": "李四333","age":  30,}resp, err := zdpgo_httprouter.SendJson("PUT", targetUrl, data)if err != nil {t.Error(err)}io.Copy(os.Stdout, resp.Body)
}

17 实现根据ID删除用户的接口并进行测试

package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""gorm_api_user2/g""gorm_api_user2/model""net/http""strconv"
)func userDelete(w http.ResponseWriter, r *http.Request, ps zdpgo_httprouter.Params) {idStr := ps.ByName("id")id, _ := strconv.Atoi(idStr)g.GDB.Delete(&model.User{Id: id})zdpgo_httprouter.ResponseSuccess(w, nil)
}
package routerimport ("github.com/zhangdapeng520/zdpgo_httprouter""io""os""testing"
)func TestUserDelete(t *testing.T) {targetUrl := "http://127.0.0.1:8888/user/4"data := map[string]interface{}{}resp, err := zdpgo_httprouter.SendJson("DELETE", targetUrl, data)if err != nil {t.Error(err)}io.Copy(os.Stdout, resp.Body)
}

总结

整个课程从如何连接MySQL讲起,讲解gorm的增删改查常见操作,然后结合REST API接口开发的知识,开发一个用户管理系统的后端API服务,层层递进,学习路径平缓。

通过本套课程,能帮你入门Go语言加gorm框架开发后端REST API接口服务的技术。

如果您需要完整的源码,打赏20元即可。

人生苦短,我用PyGo,我是您身边的Python私教~

http://www.yayakq.cn/news/804990/

相关文章:

  • 做公众号关注网站赣州市资讯网
  • 网站设计公司案例网站 模板下载
  • 金融公司网站开发贸易公司如何做英文网站
  • 深圳手机商城网站设计多少钱中文 wordpress
  • 福州建设网站的公司品牌化战略的重要性
  • 深圳做网站哪家好网站快照描述
  • 昆明网站建设博滇wordpress企业模板下载地址
  • 安丘做网站公司网页原型设计
  • 做食品网站的素材网站开发综合实训心得
  • 东方城乡与住房建设部网站论文收录网站有哪些
  • 宁波网站建设的过程域名服务器有哪些
  • 建立企业网站的形式有哪几种广告型网站怎么做的
  • 宣传品牌网站建设中国外协加工网最新加工订单
  • 南山网站建设公司仿58同城分类信息网站源码
  • 网页设计网站制作一般多少钱wordpress缓存
  • 如何建设简易网站怎么做有趣视频网站
  • 临沂网站改版wordpress图片加载慢
  • 电商商城网站建设景观建筑人才网
  • 专业网站制作公司是如何处理一个优秀的网站的广州的服装网站建设
  • 站设计培训课程如何自己做视频网站
  • 公司网站建设方案书保定市网站设计
  • 设计最简单的企业网站百度搜索关键词指数
  • 六安建六安建设网站千图网解析网站怎么做
  • 如何自己做门户网站郑州大型网站建设
  • 怎么看自己做没做网站地图wordpress 不显示ip
  • 合肥市门窗工程在哪个网站接活做长春建站公司网站
  • 北京网站建设哪家好心悦会员免做卡网站
  • 微信分享接口网站开发买卖域名的网站好
  • 用腾讯云做网站wordpress投稿插件 汉化
  • html5网站特点空间备案网站