GoFrame初使用分享

GoFrame使用经验浅谈

GoFrame,既是一款优秀的开发框架,也是一套高质量的基础组件集,这一切都是若干年日积月累
的沉淀成果,难以一蹴而就,这也是其他 Golang "框架"和"类库"难以企及和比拟的。

由于初次使用GoFrame(以下简称GF)主要是用于方便操作数据库(这里使用的是postgres)
所以主要聊聊关于数据库中GF的一些简单用法,后续随着使用的深入,也会不断的更新

工具安装

使用方式:./gf install

该命令往往是在gf命令行工具下载到本地后执行(注意执行权限),用于将gf命令安装到系统环境变量默认支持的目录路径中,以便于在系统任何的地方直接可以使用gf工具。至于gf命令行工具可以自行搜索,配置完成后终端输入gf env,检查是否安装成功

文件配置

刚学习的小伙伴上手第一个要接触的便是配置文件,在创建好项目之后便可以开始填写配置文件了
官方配置实例:链接: https://goframe.org/pages/viewpage.action?pageId=3670160.
项目配置实例:

HTTP Server
[server]
	Address     = ":8080"
	ServerRoot  = "public"
	ServerAgent = "gf-app"
	LogPath     = "/tmp/log/gf-app/server"
	ClientMaxBodySize = "512m"

 Logger.
[logger]
    Path        = "/tmp/log/gf-app"
    Level       = "all"
    Stdout      = true

 加载配置文件
[loadConfig]
    #devModels = true

#各目录定义,各平台根据需要只修改root路径
#root为根目录,所有目录基于此创建
#project为工程目录,D:\\data\\project
#tmp为临时文件夹,重启会删除,D:\\data\\tmp
#upload为上传时临时存放路径,在tmp下D:\\data\\tmp\\upload
#protocol为协议存放路径 D:\\data\\protocol
[path]
   root = "D:\\data"
   project = "project"
   label = "triggersourcemould"
   tmp = "tmp"
   upload = "upload"
   protocol = "protocol"

 数据库连接配置
[database]
    [database.default]
        link   = "pgsql: user=postgres password=*** host=192.168.**.** port=5432 dbname=postgres sslmode=disable"
        debug  = true
    [database.postgres]
        link   = "pgsql: user=postgres password=*** host=192.168.**.** port=5432 dbname=postgres sslmode=disable"
        debug  = true

工具相关配置
[gfcli]
    # dao生成
    [[gfcli.gen.dao]]
        link         = "pgsql: user=postgres password=***** host=192.168.***.*** port=5432 dbname=postgres sslmode=disable"
        path         = "./app"
        tables       = "protocolmould"

需要特别注意的是,配置文件对缩进有着严格的要求,可以参考官方缩进的格式
在数据库连接配置中,一定不要忘记配置 [database.default],postgres中sslmode不可省略,其他数据库有待读者自己去体验

生成model,dao代码

在上述文件配置完成后,去数据库建好表,注意表名更改,在终端输入gf gen dao便可生成model和dao代码(什么?model也生成了?Amazing!),会自动在你的项目根目录下创建dao和model两个目录

数据库操作

这些都做完之后,就可以开始通过代码进行数据库操作了,以表protocolmould为例,举几个简单的例子

查询
dao.ProtocolInfo.Where(params.Where).Count()查询条数,where中的字符是自定义的条件

dao.ProtocolInfo.Where(params.Where).scan(&data)查询并将查到的数据存入结构体data

dao.ProtocolInfo.All()查询该表中所有数据

一个分页查询的例子

	var total int
	protocolInfo := dao.ProtocolInfo.Page(params.Page, params.PageSize)
	if len(params.Where)>0 {
		protocolInfo = protocolInfo.Where(params.Where)
		total,_ = dao.ProtocolInfo.Where(params.Where).Count()
	} else {
		total,_ = dao.ProtocolInfo.Count()
	}

	if len(params.OrderBy)>0 {
		protocolInfo = protocolInfo.Order(params.OrderBy)
	}

	res, err := protocolInfo.All()
	if err != nil {
		glog.Println(err)
		err = gerror.NewCode(model.ERR_DB_QUERY, err.Error())
		return nil, err
	} else {
		return &model.DataRes{
			Items:	res,
			Total:	total,
		}, nil
	}

插入
dao.ProtocolInfo.Data(data).Insert()将data中的数据插入表中

更新
dao.ProtocolInfo.Data(数据).Update()
在gf中也有gmap的用法,将我们需要的数据进行更新,增删改查同理

dao.Protocolmould.Data(g.Map{
							dao.Protocolmould.Columns.Name:data.Name,
							dao.Protocolmould.Columns.ProtocolId:data.Len,
						}).Update()

删除
dao.ProtocolInfo.Data(数据).Where(条件).Delete()

gf框架中封装了许多好用的函数,提高了我们的开发效率,这里只做一个简介,主要是Where,Data以及增删改查函数的配合使用,达到我们的数据库操作目的

你可能感兴趣的:(go,go,postgresql)