博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
个人第一个go样例,gin+gorm
阅读量:2071 次
发布时间:2019-04-29

本文共 3101 字,大约阅读时间需要 10 分钟。

最近从java转go了

自己没事手写个样例

1.注意事项

1.安装go  goland  git2.下载以下依赖go get -u github.com/jinzhu/gormgo get -u github.com/gin-gonic/gin3.如果下载失败访问http://goproxy.io设置代理下载依赖即可

2.main.go

package main// only need mysql OR sqlite // both are included here for referenceimport (	"fmt"	"github.com/gin-gonic/gin"	"github.com/jinzhu/gorm"	_ "github.com/jinzhu/gorm/dialects/mysql")var db *gorm.DBvar err errortype Person struct {	ID uint `json:"id" gorm:"primary_key"`	FirstName string `json:"firstname"`	LastName string `json:"lastname"`	City string `json:"city"`}func main() {	// NOTE: See we’re using = to assign the global var	// instead of := which would assign it only in this function	//db, err = gorm.Open("sqlite3", "./gorm.db")	//db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local")	//	//if err != nil {	//	fmt.Println(err)	//	panic(err)	//}	//defer db.Close()	db :=Dbinit()	db.AutoMigrate(&Person{})	if !db.HasTable(&Person{}) {		if err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8").CreateTable(&Person{}).Error; err != nil {			panic(err)		}	}	r := gin.Default()	//localhost:8080/people	r.GET("/people/", GetPeople)	//localhost:8080/people/1	r.GET("/people/:id", GetPerson)	//localhost:8080/people {"id":4,"firstname":"Elvis","lastname":"Presley","city":"beijing"}	r.POST("/people", CreatePerson)	//localhost:8080/people {"id":4,"firstname":"Elvis","lastname":"Presley","city":"beijing"}	r.PUT("/people/:id", UpdatePerson)	//localhost:8080/people/1	r.DELETE("/people/:id", DeletePerson)	r.Run(":8080")}func DeletePerson(c *gin.Context) {	id := c.Params.ByName("id")	var person Person	db = Dbinit()	d := db.Where("id = ?", id).Delete(&person)	fmt.Println(d)	c.JSON(200, gin.H{"id #" + id: "deleted"})}func UpdatePerson(c *gin.Context) {	var person Person	id := c.Params.ByName("id")	db = Dbinit()	if err := db.Where("id = ?", id).First(&person).Error; err != nil {		c.AbortWithStatus(404)		fmt.Println(err)	}	c.BindJSON(&person)	db.Save(&person)	c.JSON(200, person)}func CreatePerson(c *gin.Context) {	var person Person	c.BindJSON(&person)	db = Dbinit()	db.Create(&person)	c.JSON(200, person)}func GetPerson(c *gin.Context) {	id := c.Params.ByName("id")	var person Person	db = Dbinit()	if err := db.Where("id = ?", id).First(&person).Error; err != nil {		c.AbortWithStatus(404)		fmt.Println(err)	} else {		c.JSON(200, person)	}}func GetPeople(c *gin.Context) {	var people []Person	db = Dbinit()	if err := db.Find(&people).Error; err != nil {		c.AbortWithStatus(404)		fmt.Println(err)	} else {		c.JSON(200, people)	}}func Dbinit() *gorm.DB {	db := NewConn()	//SetMaxOpenConns用于设置最大打开的连接数	//SetMaxIdleConns用于设置闲置的连接数	db.DB().SetMaxIdleConns(10)	db.DB().SetMaxOpenConns(100)	// 启用Logger,显示详细日志	db.LogMode(true)	// 自动迁移模式	//db.AutoMigrate(&Model.UserModel{},	//	&Model.UserDetailModel{},	//	&Model.UserAuthsModel{},	//)	return db}func NewConn() *gorm.DB {	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.Error())	}	return db}

欢迎大家积极交流,我也不太懂go

转载地址:http://bypmf.baihongyu.com/

你可能感兴趣的文章
云原生 第十二章 可观测性:监控与日志
查看>>
Leetcode C++ 《第203场周赛》
查看>>
云原生 第十三章 Kubernetes网络概念及策略控制
查看>>
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
查看>>
《redis设计与实现》 第二部分(第9-11章):单机数据库的实现
查看>>
算法工程师 面经2019年5月
查看>>
搜索架构师 一面面经2019年6月
查看>>
稻草人手记
查看>>
第一次kaggle比赛 回顾篇
查看>>
leetcode 50. Pow(x, n)
查看>>
leetcode 130. Surrounded Regions
查看>>
【托业】【全真题库】TEST2-语法题
查看>>
博客文格式优化
查看>>
【托业】【新托业全真模拟】疑难语法题知识点总结(01~05)
查看>>
【SQL】group by 和order by 的区别。
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>