自己的网站首页背景怎么做wordpress 腾讯验证码
- 作者: 五速梦信息网
- 时间: 2026年04月20日 05:01
当前位置: 首页 > news >正文
自己的网站首页背景怎么做,wordpress 腾讯验证码,南头专业英文网站建设公司,wordpress运行时间文/朱季谦 环境准备#xff1a;安装Gin与Gorm 本文搭建准备环境#xff1a;GinGormMySql。 Gin是Go语言的一套WEB框架#xff0c;在学习一种陌生语言的陌生框架#xff0c;最好的方式#xff0c;就是用我们熟悉的思维去学。作为一名后端Java开发#xff0c;在最初入门… 文/朱季谦 环境准备安装Gin与Gorm 本文搭建准备环境GinGormMySql。 Gin是Go语言的一套WEB框架在学习一种陌生语言的陌生框架最好的方式就是用我们熟悉的思维去学。作为一名后端Java开发在最初入门时最熟悉的莫过于MVC分层结构可以简单归纳成controller层model层dao层而在SpringBoot框架里大概也经常看到以下的分层结构—— 这个结构分为java根目录与resources资源目录。 在学习Go语言的Gin框架时是否也可以参照这样的分层结构来搭建一套简单的后端系统呢。 答案是肯定的。 接下来我们就按照这个MVC分层结构搭建一套基于GinGorm框架的Go语言后端。 搭建之前先简单介绍一下Gin和Gorm分别是什么。 Gin是一个golang的WEB框架很轻量依赖到很少有些类似Java的SpringMVC通过路由设置可以将请求转发到对应的处理器上。 Gorm是Go语言的ORM框架提供一套对数据库进行增删改查的接口使用它就可以类似Java使用Hibernate框架一样可对数据库进行相应操作。 若要用到这两套框架就需要import依赖进来依赖进来前需要Go命令安装Gin和Gorm。 go get -u github.com/gin-gonic/gin go get -u github.com/jinzhu/gorm最好放在GOPATH目录下。 我的GOPATH目录在C:\Users\Administrator\go下 通过Go命令安装的依赖包放在这个目录底下C:\Users\Administrator\go\src下 现在我们就参考SpringBoot的分层结构搭建一套MVC分层结构系统。 一、搭建根目录与资源目录。 先创建一个Go项目这里我取名为go-admin底下创建一个go目录用于存放Go代码一个resources资源目录存放配置文件结构如下—— go根目录底下创建controller、service、dao、entity包另外还需要一个router包用于存放路由文件可能你对路由文件不是很理解那么你可以简单理解为这个路由的作用就类似SpringMVC的RequestMapping(/user)和GetMapping(/list)注解组合起到的作用通过路由就可以找到需要调用的后端方法。创建完这些包后若在SpringBoot项目里是否还缺少一个xxxxxApplication.java的启动类没错在Go里同样需要一个启动类该启动类文件可以直接命名为main.go。 创建以上包与类后go根目录底下结构如下 接下来是在resources资源目录创建一个application.yaml配置文件当然这个配置文件可以随便命名不用像SpringBoot那样需要考虑其命名背后所代表的优先级。 这个配置文件里就存放需要用到的Mysql数据库连接信息 url: 127.0.0.1 userName: root password: root dbname: example post: 3306这些基础工作做好后就可以填充代码了。 二、dao层的搭建。 在dao层下建立一个mysql.go文件这个文件在dao的包下最初的效果如下 按照以往jdbc连接数据库的步骤首先需要加载jdbc驱动程序然后再创建数据库的连接其实在Go连接数据库同样需要类似这样的操作。 首先需要导入数据库驱动程序。 Gorm已经包含了驱动程序只需要将它导入进来即可 import _ github.com/jinzhu/gorm/dialects/mysql进入到这个依赖包的源码根据命名就可以看到出这是一个go语言的mysql驱动包—— 除此之外还提供了mssql、postgres、sqlite的驱动包。 底层使用到的是GORM 框架自然也要把它依赖进来 import github.com/jinzhu/gorm另外还需要依赖以下几个包用于读取yaml配置文件数据与拼接成url字符串 import io/ioutil import gopkg.in/yaml.v2 import fmt当依赖的包过多时我们可以统一放到一个号里例如这样 import (github.com/jinzhu/gorm_ github.com/jinzhu/gorm/dialects/mysqlio/ioutilgopkg.in/yaml.v2fmt )到这一步效果如下 这里爆红色是正常的Go语言与Java不同的一个地方是若依赖进来的包没有被用到话会直接出现红色异常提示后面写到用到它们的代码时就正常了。 接下来定义一个用于接收yaml配置参数的struct结构体你可以简单将它理解为Java的类。 type conf struct {Url string yaml:urlUserName string yaml:userNamePassword string yaml:passwordDbName string yaml:dbnamePort string yaml:post }然后提供一个读取解析该yaml配置的方法将读取到的配置参数数据转换成上边的结构体conf func (c *conf) getConf() *conf {//读取resources/application.yaml文件yamlFile, err : ioutil.ReadFile(resources/application.yaml)//若出现错误打印错误提示if err ! nil {fmt.Println(err.Error())}//将读取的字符串转换成结构体conferr yaml.Unmarshal(yamlFile, c)if err ! nil {fmt.Println(err.Error())}return c }后面可以通过debug观察一下这个返回的c变量它就类似Java的对象里边是key-value形式的值—— 最后就可以根据这些解析到的配置参数用来驱动连接数据库了。 创建一个类似旧版mybatis全局的SqlSession变量就取名为SqlSession即可该变量起到作用于mybatis的SqlSession实例类似在数据库驱动连接成功后即可提供select/insert/update/delete方法。 var SqlSession *gorm.DB然后定义一个初始化连接数据库的方法该方法用于在启动项目时执行—— func InitMySql()(err error) {var c conf//获取yaml配置参数conf:c.getConf()//将yaml配置参数拼接成连接数据库的urldsn : fmt.Sprintf(%s:%stcp(%s:%s)/%s?charsetutf8mb4parseTimeTruelocLocal,conf.UserName,conf.Password,conf.Url,conf.Port,conf.DbName,)//连接数据库SqlSession,err gorm.Open(mysql,dsn)if err !nil{panic(err)}//验证数据库连接是否成功若成功则无异常return SqlSession.DB().Ping() }最后还需要提供一个可以关闭数据库连接的方法—— func Close() {SqlSession.Close() }到这里我们就完成了Dao层的搭建该层里的代码主要负责连接数据库创建一个取名为SqlSession全局的*gorm.DB变量该变量作用类似SqlSession,提供了操作数据库的方法最后整块dao层的mysql.go代码就如下 package daoimport (github.com/jinzhu/gormio/ioutil )import (github.com/jinzhu/gorm_ github.com/jinzhu/gorm/dialects/mysqlio/ioutilgopkg.in/yaml.v2fmt ) //指定驱动 const DRIVER mysqlvar SqlSession *gorm.DB//配置参数映射结构体 type conf struct {Url string yaml:urlUserName string yaml:userNamePassword string yaml:passwordDbName string yaml:dbnamePort string yaml:post }//获取配置参数数据 func (c *conf) getConf() conf {//读取resources/application.yaml文件yamlFile, err : ioutil.ReadFile(resources/application.yaml)//若出现错误打印错误提示if err ! nil {fmt.Println(err.Error())}//将读取的字符串转换成结构体conferr yaml.Unmarshal(yamlFile, c)if err ! nil {fmt.Println(err.Error())}return c }//初始化连接数据库生成可操作基本增删改查结构的变量 func InitMySql()(err error) {var c conf//获取yaml配置参数conf:c.getConf()//将yaml配置参数拼接成连接数据库的urldsn : fmt.Sprintf(%s:%stcp(%s:%s)/%s?charsetutf8mb4parseTimeTruelocLocal,conf.UserName,conf.Password,conf.Url,conf.Port,conf.DbName,)//连接数据库SqlSession,err gorm.Open(DRIVER,dsn)if err !nil{panic(err)}//验证数据库连接是否成功若成功则无异常return SqlSession.DB().Ping() } //关闭数据库连接 func Close() {SqlSession.Close() }三、entity层定义模型。 Gorm是全特性的ORM框架即对象关系映射这样就需要类似Java那样建立与数据库映射的类在Go语言当中我们称之为结构体。 首先先创建一张用于验证的数据库表结构—— CREATE TABLE sys_user (id int(50) unsigned NOT NULL AUTO_INCREMENT,name varchar(50) NOT NULL COMMENT 用户名,nick_name varchar(150) DEFAULT NULL COMMENT 昵称,avatar varchar(150) DEFAULT NULL COMMENT 头像,password varchar(100) DEFAULT NULL COMMENT 密码,email varchar(100) DEFAULT NULL COMMENT 邮箱,mobile varchar(100) DEFAULT NULL COMMENT 手机号,create_time bigint(50) DEFAULT NULL COMMENT 更新时间,del_status tinyint(4) DEFAULT 0 COMMENT 是否删除 -1已删除 0正常,PRIMARY KEY (id),UNIQUE KEY name (name) ) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8 COMMENT用户表;然后创建一个User.go文件里边定义一个User结构体—— type User struct {Id int json:idName string json:nameNickName string json:nickNameAvatar string json:avatarPassword string json:passwordEmail string json:emailMobile string json:mobileDelStatus int json:delStatusCreateTime int64 json:createTime }注意一点这里需要明确指出其struct结构体映射到哪一张表如果没有显示指出它会默认生成一张命名为users的数据库表—— // 数据库表明自定义默认为model的复数形式比如这里默认为 users func (User) TableName() string {return sys_user }到这一步我们就完成了user模型关系建立。 package entity// 数据库表明自定义默认为model的复数形式比如这里默认为 users func (User) TableName() string {return sys_user }type User struct {Id int json:idName string json:name NickName string json:nickNameAvatar string json:avatarPassword string json:passwordEmail string json:emailMobile string json:mobileDelStatus int json:delStatusCreateTime int64 json:createTime }四、service层建立增删改查业务逻辑。 在service层建立一个User的service类命名为UserService.go。 这里需要引入两个依赖一个是dao层创建的全局SqlSession用于操作数据库一个是User类用于接收数据库对应表结构的数据。 import (go-admin/go/daogo-admin/go/entity )接下来就可以基于SqlSession获取到的API接口对数据库进行简单的增删改查操作了。 1.添加User信息 /** 新建User信息/ func CreateUser(user entity.User)(err error) {if err dao.SqlSession.Create(user).Error;err!nil{return err}return }2.查询所有的User记录 /** 获取user集合/ func GetAllUser()(userList []entity.User,err error) {if err:dao.SqlSession.Find(userList).Error;err!nil{return nil,err}return }3.根据id删除对应的User信息 /** 根据id删除user/ func DeleteUserById(id string)(err error){err dao.SqlSession.Where(id?,id).Delete(entity.User{}).Errorreturn }4.根据id查询用户User /** 根据id查询用户User*/ func GetUserById(id string)(user entity.User,err error) {if err dao.SqlSession.Where(id?,id).First(user).Error;err!nil{return nil,err}return }5.更新用户信息 /** 更新用户信息/ func UpdateUser(user * entity.User)(err error) {err dao.SqlSession.Save(user).Errorreturn }UserService.go的完整代码如下 package serviceimport (go-admin/go/daogo-admin/go/entity )/** 新建User信息*/ func CreateUser(user entity.User)(err error) {if err dao.SqlSession.Create(user).Error;err!nil{return err}return }/** 获取user集合/ func GetAllUser()(userList []entity.User,err error) {if err:dao.SqlSession.Find(userList).Error;err!nil{return nil,err}return }/** 根据id删除user/ func DeleteUserById(id string)(err error){err dao.SqlSession.Where(id?,id).Delete(entity.User{}).Errorreturn }/** 根据id查询用户User*/ func GetUserById(id string)(user entity.User,err error) {if err dao.SqlSession.Where(id?,id).First(user).Error;err!nil{return nil,err}return }/** 更新用户信息/ func UpdateUser(user * entity.User)(err error) {err dao.SqlSession.Save(user).Errorreturn }五、controller层建立User的controller类。 在controller层建立一个UserController.go类类似Java的controller主要用于根据url跳转执行到对应路径的方法。 首先引入需要用到的依赖包 import (//需要用到的结构体go-admin/go/entity//gin框架的依赖github.com/gin-gonic/gin//http连接包net/http//service层方法go-admin/go/service )接下来可以实现增删改查的controller方法了。 1.实现新增User的方法 func CreateUser(c *gin.Context) {//定义一个User变量var user entity.User//将调用后端的request请求中的body数据根据json格式解析到User结构变量中c.BindJSON(user)//将被转换的user变量传给service层的CreateUser方法进行User的新建err:service.CreateUser(user)//判断是否异常无异常则返回包含200和更新数据的信息if err!nil{c.JSON(http.StatusBadRequest,gin.H{error:err.Error()})}else {c.JSON(http.StatusOK,gin.H{code:200,msg:success,data:user,})} }2.查询User的方法 func GetUserList(c *gin.Context) {todoList,err :service.GetAllUser()if err!nil{c.JSON(http.StatusBadRequest,gin.H{error:err.Error()})}else {c.JSON(http.StatusOK,gin.H{code:200,msg:success,data:todoList,})} }六、routes层增加路由文件用于根据请求url进行转发。 routes层新建一个Routers.go文件。 首先同样需要引入需要用到的依赖—— import ( go-admin/go/controller github.com/gin-gonic/gin )然后搭建一个初始化路由的操作将路由统一存放到数据user的group组里这样可以比较方便区分这些路由数据哪个controller类的。 Routers.go文件完整代码如下 package routesimport ( go-admin/go/controller github.com/gin-gonic/gin )func SetRouter() gin.Engine {r :gin.Default()/**用户User路由组/userGroup :r.Group(user){//增加用户UseruserGroup.POST(/users,controller.CreateUser)//查看所有的UseruserGroup.GET(/users,controller.GetUserList)//修改某个UseruserGroup.PUT(/users/:id,controller.UpdateUser)//删除某个UseruserGroup.DELETE(/users/:id,controller.DeleteUserById)}return r }七、main启动类。 最后一步就是建立main的启动类了需要注意一点是go的启动类必须命名在package main的包下否则无法进行启动。 首先还是需要先引入依赖,main启动类需要用到dao、entity、routers以及mysql驱动包。 import (go-admin/go/daogo-admin/go/entitygo-admin/go/routes_ github.com/jinzhu/gorm/dialects/mysql )启动方法里的代码主要如下即前边搭建的东西这里都有用到了—— func main() {//连接数据库err :dao.InitMySql()if err !nil{panic(err)}//程序退出关闭数据库连接defer dao.Close()//绑定模型dao.SqlSession.AutoMigrate(entity.User{})//注册路由r :routes.SetRouter()//启动端口为8085的项目r.Run(:8081) }到这一步就可以启动项目了正常情况下启动成功会显示以下日志信息—— 到这一步基于GinGorm框架搭建MVC模式的Go后端系统就初步搭建完成了。 最后代码已经上传到GitHubGitHub - z924931408/go-admin: 这是个人Go语言基于Gingorm框架搭建的MVC结构的后端模块。
- 上一篇: 自己的服务器如何做网站济南网站建设sdjy6
- 下一篇: 自己的网站怎么编辑器重庆市公共资源交易中心网
相关文章
-
自己的服务器如何做网站济南网站建设sdjy6
自己的服务器如何做网站济南网站建设sdjy6
- 技术栈
- 2026年04月20日
-
自己的电脑做服务器搭建网站光明附近网站建设公司
自己的电脑做服务器搭建网站光明附近网站建设公司
- 技术栈
- 2026年04月20日
-
自己搭建网站只有文字现在o2o的平台有哪些
自己搭建网站只有文字现在o2o的平台有哪些
- 技术栈
- 2026年04月20日
-
自己的网站怎么编辑器重庆市公共资源交易中心网
自己的网站怎么编辑器重庆市公共资源交易中心网
- 技术栈
- 2026年04月20日
-
自己的网站怎么创建自我介绍面试模板
自己的网站怎么创建自我介绍面试模板
- 技术栈
- 2026年04月20日
-
自己的网站怎么做跳转做交网站
自己的网站怎么做跳转做交网站
- 技术栈
- 2026年04月20日
