wordpress导航站,WordPress背景图片编辑,关于电商的电影或者电视剧,爱企业查询概述
如果您没有Golang的基础#xff0c;应该学习如下前置课程。
Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730Mo…概述
如果您没有Golang的基础应该学习如下前置课程。
Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730MongoDB快速入门_20240411Go语言MongoDB用户管理系统实战_20240730Go语言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:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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:idName string json:nameAge int json:age
}func main() {db, err : gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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:idName string json:nameAge int json:age
}func main() {db, err : gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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 (fmtgithub.com/jinzhu/gorm_ github.com/jinzhu/gorm/dialects/mysql
)type User struct {Id int json:idName string json:nameAge int json:age
}func main() {db, err : gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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 (fmtgithub.com/jinzhu/gorm_ github.com/jinzhu/gorm/dialects/mysql
)type User struct {Id int json:idName string json:nameAge int json:age
}func main() {db, err : gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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 (fmtgithub.com/jinzhu/gorm_ github.com/jinzhu/gorm/dialects/mysql
)type User struct {Id int json:idName string json:nameAge int json:age
}func main() {db, err : gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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 (fmtgithub.com/zhangdapeng520/zdpgo_gorm_ github.com/zhangdapeng520/zdpgo_mysql
)type User struct {Id int json:idName string json:nameAge int json:age
}func main() {db, err : zdpgo_gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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 (fmtgithub.com/zhangdapeng520/zdpgo_gorm_ github.com/zhangdapeng520/zdpgo_mysql
)type User struct {Id int json:idName string json:nameAge int json:age
}func main() {db, err : zdpgo_gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8parseTimeTruelocLocal,)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_mysqlgorm_api_user2/model
)var GDB *zdpgo_gorm.DBfunc initMySQL() {var err errorGDB, err zdpgo_gorm.Open(mysql,root:roottcp(127.0.0.1:3306)/test?charsetutf8mb4parseTimeTruelocLocal,)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_httprouterfunc 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/ggorm_api_user2/routernet/httptime
)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_httproutergorm_api_user2/ggorm_api_user2/modelnet/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_httprouterioostesting
)func TestUserAdd(t *testing.T) {targetUrl : http://127.0.0.1:8888/userdata : 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_httproutergorm_api_user2/ggorm_api_user2/modelnet/httpstrconv
)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 (ionet/httpostesting
)func TestUserGetAll(t *testing.T) {targetUrl : http://127.0.0.1:8888/userresp, 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/4resp, err : http.Get(targetUrl)if err ! nil {t.Error(err)}io.Copy(os.Stdout, resp.Body)
}
16 实现根据ID修改用户的接口并进行测试
package routerimport (github.com/zhangdapeng520/zdpgo_httproutergorm_api_user2/ggorm_api_user2/modelnet/httpstrconv
)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_httprouterioostesting
)func TestUserUpdate(t *testing.T) {targetUrl : http://127.0.0.1:8888/user/4data : 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_httproutergorm_api_user2/ggorm_api_user2/modelnet/httpstrconv
)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_httprouterioostesting
)func TestUserDelete(t *testing.T) {targetUrl : http://127.0.0.1:8888/user/4data : 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私教~