goframe框架详解

goframe框架是一种企业级开发框架,可以实现项目初始的构建,代码的生成,能够让开发者更加关注业务本身的逻辑

1.框架下载,以及项目初始构建

[goframe教程](工具安装-install | GoFrame官网 - 类似PHP-Laravel,Java-SpringBoot的Go语言开发框架)在教程网页中选择适合当前版本的goframe进行下载,然后运行,会提示选择安装目录,这时注意要选择已经添加到环境变量中的go语言的路径。

下载好之后就可以进行项目的初始构建了,首先创建一个文件夹,作为项目的文件夹,现在用到的有以下几种方法:

  • 在当前的空文件夹下直接初始化构建项目:gf init .
  • 在当前的空文件夹下创建一个新的项目名的文件夹,并在新的文件夹下初始化构建项目:gf init project'sname

2.自动构建dao,do,entity

在hack中,将需要生成相关代码的数据库配置写入config文件中,然后执行gf gen dao命令,生成相关的代码文件

  • dao,do,entity的相关辨析

​ 首先dao层分为internal和外层,internal包含自动生成的基础实现,外层是提供给外部调用的接口

​ 内层interna通过下面的方法将gdb.model中的基础方法注册到ctx中

1
2
3
4
5
6
7
func (dao *UserDao) Ctx(ctx context.Context) *gdb.Model {
model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
}

​ dao,do,entity使用时的相关关系,dao层负责具体的数据库操作,do层负责传递查询条件,entity层负责接收返回的数据

​ 在实际开发中,DO和Entity在DAO层的典型应用场景包括:

1.查询操作 : 使用DO构建 Where 条件,使用Entity接收查询结果

1
2
var message entity.ChatMessage
err := dao.ChatMessage.Ctx(ctx).Where(do.ChatMessage{Id: 1}).Scan(&message)

2.插入操作 : 使用DO构建插入数据,执行插入操作

1
2
3
4
5
result, err := dao.ChatMessage.Ctx(ctx).Data(do.ChatMessage{
Senderuid: 1,
Receiveruid: 2,
Content: "Hello",
}).Insert()

3.更新操作 : 结合主键条件和DO数据进行更新

1
2
3
4
result, err := dao.ChatMessage.Ctx(ctx).
WherePri(1).
Data(do.ChatMessage{Content: "Updated content"}).
Update()

4.[关联查询](33 关联查询-一对多_哔哩哔哩_bilibili)

5.service需要实现的内容

6.goframe项目的构建顺序

  • 先使用工具构建出dao
  • 创建api相关内容
  • 创建service层的相关内容
  • 在logic层实现service层对应的接口方法
  • 在controller层调用service层的接口
  • router层注册绑定controller层的相关接口方法

3.api层,controller层以及router层(自己实现)之间的关系

使用goframe框架的整个接口创建注册流程图