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

大场网站建设全国疫情最新数据

大场网站建设,全国疫情最新数据,千山科技做网站好不好,如何用wordpress有了前面几节的学习,如果做个简单的web服务端已经可以完成了。 这节来做一下优化。 我们实验了3种SQL写入的方法,但是发现每一种都需要在方法中去做数据库链接的操作,有些重复了。 所以,我们把这部分提取出来,数据库链…

有了前面几节的学习,如果做个简单的web服务端已经可以完成了。
这节来做一下优化。

我们实验了3种SQL写入的方法,但是发现每一种都需要在方法中去做数据库链接的操作,有些重复了。
所以,我们把这部分提取出来,数据库链接的功能提取出来,数据库的配置也提取出来。
这就是今天这节要做的内容,配置化。

配置文件通常是放在conf目录下,所以我们在t_gin/下新建一个conf目录,用来存放配置文件。
然后在conf目录下,新建一个service.conf文件,作为实验用的配置文件。
完成后的目录结果如下:
在这里插入图片描述
配置文件这里使用.ini的格式。
要解析.ini格式,我们需要下载对应的package:

$ go get gopkg.in/ini.v1

将package安装好之后,我们再来想一下配置文件里放什么。
首先,我们可以将数据库配置放进去,简单点的就是dsn,这个在多场景都会用到,就不用在每个文件中去重复定义了。
在service.conf中添加数据库配置:

[mysql]
dsn = "root:@tcp(127.0.0.1:3306)/t_gin?charset=utf8&parseTime=true"

配置添加好了,怎么用呢?
方便一点,就继续使用上一节的worker.go文件来进行改造。
要做的是:
1.将数据库链接操作提取出来,不用每个方法都写一遍;
2.将dsn配置改为从配置文件service.conf中获取,不用每个文件都写一遍。
开始撸码:

func (w *WorkerController) init() *sql.DB {cfg, err := ini.Load("conf/service.conf")if err != nil {log.Println(err.Error())}mysqlDsn := cfg.Section("mysql").Key("dsn").String()db, err := sql.Open("mysql", mysqlDsn)if err != nil {log.Panic(err.Error())}return db
}

init方法是我们的简单实现。
从service.conf中读取了dsn信息,然后建立数据库链接,并返回链接。
那方法提取出来了,文件中之前的代码(插入、查询、更新)我们也同步进行调整。
调整之后的worker.go文件内容如下:

package controllerimport ("database/sql""github.com/gin-gonic/gin""github.com/huandu/go-sqlbuilder""gopkg.in/ini.v1""log""net/http"
)type WorkerController struct {
}type Worker struct {ID    int    `json:"id"`Name  string `json:"name"`Birth string `json:"birth"`
}func (w *WorkerController) init() *sql.DB {cfg, err := ini.Load("conf/service.conf")if err != nil {log.Println(err.Error())}mysqlDsn := cfg.Section("mysql").Key("dsn").String()db, err := sql.Open("mysql", mysqlDsn)if err != nil {log.Panic(err.Error())}return db
}func (w *WorkerController) CreateWorker(c *gin.Context) {db := w.init()name := c.PostForm("name")birth := c.PostForm("birth")sb := sqlbuilder.NewInsertBuilder()sb.InsertInto("worker")sb.Cols("name", "birth")sb.Values(name, birth)sqlString, args := sb.Build()log.Println(sqlString, args)_, err := db.Exec(sqlString, args...)if err != nil {log.Panic(err.Error())}c.JSON(http.StatusOK, gin.H{"code": 0,"data": true,})
}func (w *WorkerController) GetWorkerInfo(c *gin.Context) {db := w.init()id := c.Query("id")sb := sqlbuilder.NewSelectBuilder()sb.From("worker")sb.Select("id,name,birth")sb.Where(sb.Equal("id", id))sqlString, args := sb.Build()log.Println(sqlString, args)result := db.QueryRow(sqlString, args...)var worker Workererr := result.Scan(&worker.ID, &worker.Name, &worker.Birth)if err != nil {log.Panic(err.Error())}c.JSON(http.StatusOK, gin.H{"code": 0,"data": worker,})
}func (w *WorkerController) UpdateWorkerInfo(c *gin.Context) {db := w.init()id := c.PostForm("id")name := c.PostForm("name")sb := sqlbuilder.NewUpdateBuilder()sb.Update("worker")sb.Where(sb.Equal("id", id))sb.SetMore(sb.Assign("name", name))sqlString, args := sb.Build()log.Println(sqlString, args)_, err := db.Exec(sqlString, args...)if err != nil {log.Panic(err.Error())}c.JSON(http.StatusOK, gin.H{"code": 0,"data": true,})
}

修改完之后,我们运行测试,对插入、获取、更新方法都进行测试后,确认代码功能正常。

在这里,简单的将mysql的dsn配置抽出到了配置文件中做了一个示例,同样的其它一些不常用的或者很常用的配置,都是可以放在配置文件中进行处理的,免去了项目中多处写,有利于配置管理。

今天这节就到这儿。

http://www.dt0577.cn/news/54512.html

相关文章:

  • 大学生网站作品今日头条新闻
  • 巢湖网站制作品牌推广的具体方法
  • 怎样建个网站武汉网站seo德升
  • 做磁力搜索网站好吗腰肌劳损的自我治疗和恢复的方法有什么?
  • 上海网站制作建设掌门一对一辅导官网
  • wordpress加密修改优化网站的公司哪家好
  • 为朋友做的网站网络平台的推广方法
  • 天津做网站需要多少钱合肥seo培训
  • 做网站用什么语言比较简单凡科官网免费制作小程序
  • 虚拟机做的网站怎么让外网访问app推广项目
  • 企业logo怎么设计网站排名优化多少钱
  • 赣州网站建设如何网域名解析ip查询
  • 做团购网站怎样赚钱深圳seo优化公司哪家好
  • 电商网站规划设计方案什么是搜索引擎优化seo
  • 丹阳网站建设开发一个关键词要刷多久
  • 天津外贸公司网站制作网站推广策划书范文
  • 电子商务网站建设与管理教案中国国家培训网是真的吗
  • 专业系统网站微信搜一搜seo优化
  • 协会网站设计方案模板深圳关键词自动排名
  • 网站模板外包最新seo网站优化教程
  • 如何检测网站开发商留有后门市场营销推广策划方案
  • 怎么做网站加载动画营销策划的六个步骤
  • 广州做外贸网站郑州网站seo推广
  • b2b交易型网站建设方案广东东莞疫情最新消息
  • 毕业设计做系统好还是网站好十个有创意的线上活动
  • 淘宝联盟微信里做网站网络推广平台大全
  • 浙江省两学一做网站自己建网站需要多少钱
  • 公司网站找谁做软文台
  • 郑州做网站推广多少钱有什么好的推广平台
  • 动态商务网站开发与管理武汉企业seo推广