网站建设 三网,晋城网站设计人,秦皇岛营销式网站,装饰公司网页设计快速入门
gorm地址#xff1a;https://github.com/go-gorm/gorm
对开发者友好的gorm库#xff0c;目前使用最广的go orm库之一
1. 准备工作
数据库以目前使用最多的mysql为例。
//安装MySQL驱动
go get -u gorm.io/driver/mysql
//安装gorm包
go get -u gorm.io/gorm
//…快速入门
gorm地址https://github.com/go-gorm/gorm
对开发者友好的gorm库目前使用最广的go orm库之一
1. 准备工作
数据库以目前使用最多的mysql为例。
//安装MySQL驱动
go get -u gorm.io/driver/mysql
//安装gorm包
go get -u gorm.io/gorm
//安装gin
go get -u github.com/gin-gonic/gin涉及到的数据库sql
CREATE TABLE users (id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 自增ID,username varchar(30) NOT NULL COMMENT 账号,password varchar(100) NOT NULL COMMENT 密码,createtime bigint(20) NOT NULL DEFAULT 0 COMMENT 创建时间,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4新建model目录在model目录下新建一个文件user.go
//定义User模型绑定users表ORM库操作数据库需要定义一个struct类型和MYSQL表进行绑定或者叫映射struct字段和MYSQL表字段一一对应
package modeltype User struct {ID int64 // 主键//通过在字段后面的标签说明定义golang字段和表字段的关系//例如 gorm:column:username 标签说明含义是: Mysql表的列名字段名)为usernameUsername string gorm:column:usernamePassword string gorm:column:password//创建时间时间戳CreateTime int64 gorm:column:createtime
}func (u User) Table() string {return users
}新建目录global在该目录上新建文件global.go
package globalimport gorm.io/gormvar DB *gorm.DB
新建目录inition在该目录下新建初始化文件init.go
package initionimport (GinStudy/helloworld/globalfmtgorm.io/driver/mysqlgorm.io/gormgorm.io/gorm/logger
)func InitDB() {//配置MySQL连接参数username : root //账号password : 123456 //密码host : 127.0.0.1 //数据库地址可以是Ip或者域名port : 3306 //数据库端口Dbname : gin_study //数据库名dsn : fmt.Sprintf(%s:%stcp(%s:%d)/%s?charsetutf8parseTimeTruelocLocal, username, password, host, port, Dbname)db, err : gorm.Open(mysql.Open(dsn), gorm.Config{Logger: logger.Default.LogMode(logger.Info),})if err ! nil {panic(连接数据库失败, error err.Error())}global.DB db
}2.插入数据
新建servcie目录在该目录下新建user.go
package serviceimport (GinStudy/helloworld/globalGinStudy/helloworld/model
)type UserService struct {
}func (u UserService) SaveUser(user model.User) error {err : global.DB.Create(user).Errorreturn err
}
在inition该目录下建立router.go
package initionimport (GinStudy/helloworld/routergithub.com/gin-gonic/gin
)func RegisterRouter(r *gin.Engine) {r.GET(/user/save, router.SaveUser)
}
新建router目录在该目录下建立user.go
package routerimport (GinStudy/helloworld/modelGinStudy/helloworld/servicegithub.com/gin-gonic/ginnet/httptime
)func SaveUser(c *gin.Context) {err : service.UserService{}.SaveUser(model.User{Username: zhangsan2,Password: 123456,CreateTime: time.Now().UnixMilli(),})if err ! nil {c.JSON(202, gin.H{message: 添加失败,})} else {c.JSON(http.StatusOK, gin.H{message: 添加用户成功,})}
}
在main.go编写如下内容
package mainimport (GinStudy/helloworld/initiongithub.com/gin-gonic/gin
)func main() {r : gin.Default()inition.InitDB()inition.RegisterRouter(r)r.Run()
}
运行main.go然后在浏览器或POSTMAN上运行
http://localhost:8080/user/save
可看到
{message:添加用户成功}3.查询
在 service/user.go增加如下内容
func (u UserService) GetUserById(id int) (user model.User, err error) {err global.DB.Model(model.User{}).Where(id?, id).Find(user).Errorreturn user, err
}在router/user.go增加如下内容
func GetUserInfo(c *gin.Context) {userInfo, err : service.UserService{}.GetUserById(1)if err ! nil {c.JSON(202, gin.H{data: userInfo,message: 查询失败,})} else {c.JSON(http.StatusOK, gin.H{data: userInfo,message: 添加用户成功,})}
}
在inition/router.go增加如下内容
r.GET(/user/userInfo, router.GetUserInfo)最后启动main.go在浏览器上运行 http://localhost:8080/user/userInfo最终得到如下结果
{data:{ID:1,Username:zhangsan,Password:123456,CreateTime:1715762629632},message:添加用户成功}4.更新
在 service/user.go增加如下内容
func (u UserService) UpdateUser(id int) (err error) {err global.DB.Model(model.User{}).Where(id?, id).Update(username, lisi).Errorreturn err
}在router/user.go增加如下内容
func UpdateUserInfo(c *gin.Context) {err : service.UserService{}.UpdateUser(1)if err ! nil {c.JSON(202, gin.H{message: 更新失败,})} else {c.JSON(http.StatusOK, gin.H{message: 更新成功,})}
}在inition/router.go增加如下内容
r.GET(/user/updateUserInfo, router.UpdateUserInfo)最后启动main.go在浏览器上运行 http://localhost:8080/user/updateUserInfo最终得到如下结果
{message:更新成功}5.删除
在 service/user.go增加如下内容
func (u UserService)DeleteById(id int64)(err error) {err global.DB.Model(model.User{}).Where(id?, id).Delete(model.User{})return err
}在router/user.go增加如下内容
func DeleteUser(c *gin.Context) {err : service.UserService{}.DeleteById(1)if err ! nil {c.JSON(202, gin.H{message: 删除失败,})} else {c.JSON(http.StatusOK, gin.H{message: 删除成功,})}
}在inition/router.go增加如下内容 r.GET(/user/delUser, router.DeleteUser)最后启动main.go在浏览器上运行 http://localhost:8080/user/delUser最终得到如下结果
{message:删除成功}